osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld
开发环境分为三个部份
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相关推荐
- osgi实战学习之路:8. Service-3之ServiceTracker
通过ServiceTracker能够对查找的Service进行扩展 以下的demo引入装饰器模式对Service进行日志的扩展 demo: Provider student-manage/Activa ...
- osgi实战学习之路:6. Service-1
什么是Service? 它是注冊到osgi的一个java对象 Service注冊: 通过BundleContext::registerService(java.lang.String[] clazze ...
- 坎坎坷坷的深度学习之路(一)-环境搭建
大家好,我是新人,这是我的第一篇技术连载,希望可以在深度学习的路上走上一走,我会尽可能说的清楚一点,大佬们能喷就喷,这样才能进步.此后还请多多关照.(另外如果排版不好看的话欢迎评论,我会逐步优化我的排 ...
- xamarin学习之路 一、vs2015 环境搭建
一.安装vs 2015,安装过程忽略,我按照的是windows10+vs2015(也可以在安装VS 里带上5这个选项) . 二.安装Java SDK 按照Next一步步安装,此处省略 三.安装Andr ...
- Linux学习之路_15.Java开发环境搭建
1.安装JDK 安装步骤 0) 先将软件通过xftp5 上传到 /opt 下 1) 解压缩到 /opt 2) 配置环境变量的配置文件:vim /etc/profile 3) JAVA_HOME=/o ...
- cocos2d-x 4.0 学习之路(一)环境搭建 Mac版
我的Mac系统:MacOS Catalina 10.15.3,Xcode 11.3.1 (Windows上的环境搭建,请参考我的另一篇博客,环境搭建Windows版) 准备工作: 1.检查Python ...
- SpringCloud学习之路
SpringCloud学习之路 1.使用IDEA搭建Eureka服务中心Server端启动 1.1.创建和配置注册中心Eureka 1.2.使用Eureka案例 1.3.负载均衡器Ribbon 1.4 ...
- 拿下斯坦福和剑桥双offer,00后的算法学习之路
董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...
- 【C++学习之路】第一章——C++核心方法总论
1 C++核心方法总论 1.1 核心思想 通过实际项目来学习编程,更高效掌握编程规则,以及明白各种语法规则的实际应用. 实验思想:任何C++的参考资料都不可能覆盖你遇到的所有问题,这个时候,最好的办法 ...
最新文章
- 通过销售订单领用到成本中心,FI替代实现不同成本中心记账科目不同
- mysql update 行迁移_Oracle行迁移和行链接详解
- linux下查看mysql的当前连接情况
- android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...
- mongo3.5 java cursor,Spring Data MongoDB-需要'cursor'选项
- 【心电信号】基于matlab心电信号采集与处理【含Matlab源码 954期】
- 敏感词过滤和谐社会1.0版
- uni-app配置代理
- 如何管理好一个研发管理团队
- 一文看懂中国清算体系
- 基于VC面部识别软件(识别出人脸特征)
- 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询
- 面部表情识别3:Android实现表情识别(含源码,可实时检测)
- JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
- kubernetes HPA使用及测试
- 2022登高架设操作证考试题库及模拟考试
- 一款运行在Mac平台上的浏览器:Vivaldi浏览器 for Mac
- 《UnityAPI.Quaternion四元数》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Quaternion+Angle+Dot+Euler+立钻哥哥++OK++)
- 最新PHP面试题汇总(附答案)
- 乐理matlab频率表,乐理小知识:音高与国际谱
热门文章
- 我的第一个油猴脚本「屏蔽CSDN底下的登录栏」
- 【计算机系统结构】第一章 计算机系统结构基本概念
- 戴尔服务器r510装系统,戴尔R510服务器网卡驱动安装步骤.doc
- ECharts3D地图 简单制作省份地图
- wince搜狗地图_安卓百度地图winCE版 V10.9.2 安卓版下载 - 加速吧 - win10系统之家
- nginx 日志处理goaccess、shell
- 阿里大老带你了解“计算机“的初识
- mysql查询不及格的学生_查询“数据库”不及格的学生的学号和成绩。
- Hardhat工具包3--多条链网络配置、部署
- linux蓝牙源代码,Android 4.4 蓝牙源码部分分析