开发环境分为三个部份

osgi_provider:

bundle开发环境,对外提供服务

osgi_consumer:

引用其它bundle

osgi_main:

运行测试

项目主要内容 :

common.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="common">    <!--属性定义 --><dirname property="root.dir" file="${ant.file.common}" /><property file="${root.dir}/common/build.properties" /><path id="external.classpath" ><fileset dir="${lib.dir}" includes="*.jar" /></path><!-- dist -->    <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bnd.jar}"/><target name="dist" depends="compile" ><echo>dist...</echo><pathconvert pathsep="," dirsep="/" property="-classpath" refid="external.classpath"/><!-- 利用bnd工具生成 bundle--><bnd files="${root.dir}/common/bundle.properties"  classpath="${build.classes.dir}"/><!-- 复制到client,main的lib中--><copy todir="${to_client_lib.dir}" ><fileset dir="${build.dist.bundles.dir}" includes="*.jar" ></fileset></copy><copy todir="${to_main_lib.dir}" ><fileset dir="${build.dist.bundles.dir}" includes="*.jar" ></fileset></copy></target><!-- clean-->  <target name="clean"><echo>clean...</echo><delete dir="${build.dir}"/></target><!-- init--><target name="init" depends="clean"><echo>init...</echo><mkdir dir="${build.dir}" /><mkdir dir="${build.src.dir}" /><mkdir dir="${build.classes.dir}" /><mkdir dir="${build.dist.dir}" /><mkdir dir="${build.dist.bundles.dir}" /></target><!-- compile--><target name="compile" depends="init"><echo>compile ...</echo><property name="compile.level" value="1.5" />     <!-- 编译--><javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" source="${compile.level}" target="${compile.level}" includeantruntime="false"><classpath><path refid="external.classpath" /><fileset dir="${build.dist.bundles.dir}" includes="*.jar" /></classpath></javac><!-- 复制src--><copy todir="${build.src.dir}" includeEmptyDirs="false"><fileset dir="${src.dir}" includes="**/*.*"/></copy></target></project>

common\build.properties:

build.xml中属性配置

#-------------------------------------------------
#-------------------------------------------------src.dir=src
lib.dir=lib
build.dir=build
build.src.dir=${build.dir}/src
build.classes.dir=${build.dir}/classes
build.dist.dir=${build.dir}/dist
build.dist.bundles.dir=${build.dist.dir}/bundles
build.test.dir=${build.dir}/test
#copy bundle to  osgi_consumer/lib
to_client_lib.dir=../osgi_consumer/lib
#copy bundle to  osgi_main/lib
to_main_lib.dir=../osgi_main/lib
bnd.jar=${lib.dir}/bnd-0.0.384.jarBundle-Name: ${ant.project.name}
Bundle-SymbolicName: ${module}
Bundle-Version: ${version}
Bundle-DocURL: http://code.google.com/p/osgi-in-action/
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0
Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6version: 1.0-versionpolicy:"[$(version;\=\=;$(@)),$(version;+;$(@)))"Include-Resource:META-INF/LICENSE\=${root.dir}/LICENSE-ASL.txt,META-INF/NOTICE\=${root.dir}/NOTICE-output:\${build.dist.bundles.dir}/${ant.project.name}-${version}.jar-removeheaders:\Private-Package,Include-Resource

common\bundle.properties

bundle的描述信息

module=com.demo.hello
custom=trueExport-Package:${module};version\="2.0"Import-Package:org.osgi.framework;version\="[1.3,2.0)",${module};version\="[2.0,3.0)"

注意:

  • 将lib下的包添加到build path中
  • bundle的创建由bnd来执行
  • osgi_provider会将创建的bundle复制到osgi_consumer,osgi_main
  • osgi_consumer会将创建的bundle复制到osgi_main

源代码下载

osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld相关推荐

  1. osgi实战学习之路:8. Service-3之ServiceTracker

    通过ServiceTracker能够对查找的Service进行扩展 以下的demo引入装饰器模式对Service进行日志的扩展 demo: Provider student-manage/Activa ...

  2. osgi实战学习之路:6. Service-1

    什么是Service? 它是注冊到osgi的一个java对象 Service注冊: 通过BundleContext::registerService(java.lang.String[] clazze ...

  3. 坎坎坷坷的深度学习之路(一)-环境搭建

    大家好,我是新人,这是我的第一篇技术连载,希望可以在深度学习的路上走上一走,我会尽可能说的清楚一点,大佬们能喷就喷,这样才能进步.此后还请多多关照.(另外如果排版不好看的话欢迎评论,我会逐步优化我的排 ...

  4. xamarin学习之路 一、vs2015 环境搭建

    一.安装vs 2015,安装过程忽略,我按照的是windows10+vs2015(也可以在安装VS 里带上5这个选项) . 二.安装Java SDK 按照Next一步步安装,此处省略 三.安装Andr ...

  5. Linux学习之路_15.Java开发环境搭建

    1.安装JDK 安装步骤 0) 先将软件通过xftp5 上传到 /opt 下 1) 解压缩到 /opt 2)  配置环境变量的配置文件:vim /etc/profile 3) JAVA_HOME=/o ...

  6. cocos2d-x 4.0 学习之路(一)环境搭建 Mac版

    我的Mac系统:MacOS Catalina 10.15.3,Xcode 11.3.1 (Windows上的环境搭建,请参考我的另一篇博客,环境搭建Windows版) 准备工作: 1.检查Python ...

  7. SpringCloud学习之路

    SpringCloud学习之路 1.使用IDEA搭建Eureka服务中心Server端启动 1.1.创建和配置注册中心Eureka 1.2.使用Eureka案例 1.3.负载均衡器Ribbon 1.4 ...

  8. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  9. 【C++学习之路】第一章——C++核心方法总论

    1 C++核心方法总论 1.1 核心思想 通过实际项目来学习编程,更高效掌握编程规则,以及明白各种语法规则的实际应用. 实验思想:任何C++的参考资料都不可能覆盖你遇到的所有问题,这个时候,最好的办法 ...

最新文章

  1. 通过销售订单领用到成本中心,FI替代实现不同成本中心记账科目不同
  2. mysql update 行迁移_Oracle行迁移和行链接详解
  3. linux下查看mysql的当前连接情况
  4. android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...
  5. mongo3.5 java cursor,Spring Data MongoDB-需要'cursor'选项
  6. 【心电信号】基于matlab心电信号采集与处理【含Matlab源码 954期】
  7. 敏感词过滤和谐社会1.0版
  8. uni-app配置代理
  9. 如何管理好一个研发管理团队
  10. 一文看懂中国清算体系
  11. 基于VC面部识别软件(识别出人脸特征)
  12. 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询
  13. 面部表情识别3:Android实现表情识别(含源码,可实时检测)
  14. JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
  15. kubernetes HPA使用及测试
  16. 2022登高架设操作证考试题库及模拟考试
  17. 一款运行在Mac平台上的浏览器:Vivaldi浏览器 for Mac
  18. 《UnityAPI.Quaternion四元数》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Quaternion+Angle+Dot+Euler+立钻哥哥++OK++)
  19. 最新PHP面试题汇总(附答案)
  20. 乐理matlab频率表,乐理小知识:音高与国际谱

热门文章

  1. 我的第一个油猴脚本「屏蔽CSDN底下的登录栏」
  2. 【计算机系统结构】第一章 计算机系统结构基本概念
  3. 戴尔服务器r510装系统,戴尔R510服务器网卡驱动安装步骤.doc
  4. ECharts3D地图 简单制作省份地图
  5. wince搜狗地图_安卓百度地图winCE版 V10.9.2 安卓版下载 - 加速吧 - win10系统之家
  6. nginx 日志处理goaccess、shell
  7. 阿里大老带你了解“计算机“的初识
  8. mysql查询不及格的学生_查询“数据库”不及格的学生的学号和成绩。
  9. Hardhat工具包3--多条链网络配置、部署
  10. linux蓝牙源代码,Android 4.4 蓝牙源码部分分析