可能99%用Java开发软件的同学都会用Eclipse来作为开发用IDE,特别是开发OSGI方面的,可能更有可能用Eclipse。但很不幸,可能是因为早期对Eclipse的“童年”阴影,对Eclipse大量强大的功能,觉得学习繁琐,所以本人对Eclipse有点抗拒,当然这只是个人的感受:)。
那么不用Eclipse,我可以用什么呢?总不能用文本编辑器来写代码吧,所以我选择了netbean作为我的IDE,因为我感觉它用起来比较简单。但IDE通常会有自己的工程组织方式,所以Eclipse的工程要放在netbean上用,或者反之,都不是很方便。所以我又选择用了Maven。
相信Maven是目前开源项目中最普遍使用的一套项目管理工具。既然是这样,我们为什么要将我们的项目和IDE捆绑在一起,为什么不统一用这个最流行的工具来构建一个项目工程,而是采用特定于某个IDE的方式来构建工程呢?
在Netbean里,我们可以直接打开Maven工程,而在Eclipse里,则只需用mvn eclipse:eclipse就可以将Maven工程转化成一个Eclipse工程。
开始开发OSGI Bundle时,自然也就想到用Maven来构建工程。首先,Bundle本身就是一个JAR包,它和普通JAR包的区别主要在于Manifest.mf上,所以,要构建Bundle,直接沿用构建JAR包的方式即可,再加上最方便处理Manaifest.mf的功能即可,于是,就有了一下这样的模板(POM.XML):
<project xmlns:pom="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<groupId>com.ponder.tutorials.app01</groupId>
<artifactId>Calculator</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>app01-Calculator</name>
<url>http://app01.ponder.com/Calculator/</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>${project.build.finalName}.jar</Class-Path>
<Built-By>Ponder</Built-By>
<Bundle-ManifestVersion>2</Bundle-ManifestVersion>
<Bundle-Name>
${project.groupId}.${project.ArtifactId}
</Bundle-Name>
<Bundle-SymbolicName>${project.name}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Vendor>${project.groupId}</Bundle-Vendor>
<Bundle-Activator>
${project.groupId}.${project.ArtifactId}.Activator
</Bundle-Activator>
<Export-Package>
${project.groupId}.${project.ArtifactId}.Export
</Export-Package>
<Import-Package>org.osgi.framework</Import-Package>
<Embed-Dependency>*</Embed-Dependency>
<DynamicImport-Package>*</DynamicImport-Package>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>4.2.0</version>
<type>jar</type>
</dependency>
</dependencies>
</project>
其中用了maven-jar-plugin,通过这个plugin的Configuration/archive/manifest的配置,就可以很方便地设置Bundle所需的Manifest项,打包时会自动创建manifest.mf。
当然以上只是最基础的部分,我们还可以基于Maven提供的Surefire插件做Bundle的单元测试,利用Maven的父项目来将一组相关联的Bundle项目组合成一个大的项目,还可以将Maven的repository当作OSGI的OBR(OSGI Bundle Repository),用于Bundle的部署发布方面。
分享到:
相关推荐
在本篇文章中,我们将详细介绍如何使用Maven构建一个OSGi项目,包括项目的创建、容器的启动、Bundle的导入与创建等方面。 #### 开发环境 - Eclipse 3.6 或更高版本 - Maven - OSGi框架(例如Equinox或Felix) - ...
3. Maven与OSGi的结合:在OSGi环境中,Maven可以帮助管理模块的依赖关系,将JAR文件打包为OSGi兼容的bundle。Maven的BND插件或Apache Felix Bundle Plugin就是用来将Maven项目转换为OSGi bundle的工具。通过这些插件...
本篇文章将深入探讨如何使用Eclipse与Maven一起打包bundle,这在Java OSGi(Open Services Gateway Initiative)开发中尤为常见。 首先,我们需要了解OSGi,它是一种模块化系统,用于Java应用程序,允许动态发现和...
标题中的“osgi-bundle-hello-world”是一个示例项目,展示了如何使用Maven构建一个OSGi(Open Services Gateway Initiative)捆绑包。OSGi是一种Java模块化系统,它允许开发者将应用程序分解为独立的、可重用的服务...
在IntelliJ IDEA中,我们可以通过Maven生命周期来构建、安装和部署这些OSGi Bundle到本地仓库或OSGi运行时。然后,我们可以在IDEA的OSGi运行时中启动和调试这些模块,观察服务的注册和消费过程。 至于压缩包中的...
5. **打包工具**:为了方便创建和管理OSGi bundle,有一些工具可以帮助开发者,如Apache Maven的maven-bundle-plugin或Gradle的osgi plugin。这些工具能够自动生成满足OSGi规范的MANIFEST.MF,并将依赖关系正确地...
8. **部署和管理**:如何在OSGI运行时环境(如Equinox或Felix)中部署和管理bundle,以及如何使用OSGI的命令行工具或图形用户界面进行操作。 9. **实战应用**:"OSGI实战.pdf"可能包含实际项目案例,演示如何在真实...
**标题解析:** "blueprint-osgi-bundle:OSGi 示例" 指的是一个基于OSGi(Open Service Gateway Initiative)框架的示例项目,它使用了Blueprint服务容器来管理服务组件。Blueprint是Apache Felix项目中的一个子项目...
maven-bundle-plugin-1.0.0.jar maven-clean-plugin-2.4.1.jar maven-clean-plugin-2.5.jar maven-common-artifact-filters-1.3.jar maven-compat-3.2.1-sources.jar maven-compiler-plugin-2.5.1.jar maven-...
使用Maven或Gradle等构建工具,创建一个新的OSGi Bundle项目。确保在pom.xml或build.gradle文件中包含适当的OSGi依赖,例如Apache Felix或Equinox的Servlet API。 4. **编写Servlet类** 创建一个继承自`javax....
- 构建bundle:使用构建工具如Maven或Gradle,配置相应的Osgi插件来生成bundle JAR文件。 4. **Eclipse中的Osgi实现** 描述中提到的"简单用代码解释了过程"可能指的是通过Eclipse插件开发的过程。在Eclipse中,...
为了方便开发OSGi bundle,可以使用以下工具: - **Eclipse Plugin Development Environment (PDE)**:Eclipse的插件开发环境提供了丰富的功能来支持OSGi开发。 - **Bnd**:这是一个用于构建和验证OSGi bundle的...
为了在OSGi环境中有效地开发,通常会使用一些工具,如Maven进行依赖管理和构建,Pax-construct和Pax-runner辅助构建OSGi应用,以及Eclipse作为IDE进行开发。Maven的使用可以简化项目结构、依赖管理和构建过程,但...
在开发使用Felix的OSGi应用时,首先需要准备开发环境,这通常涉及到JDK、Maven和Felix这三个主要部分。JDK是Java Development Kit,是Java应用开发的必备工具。Maven则是项目管理工具,用于项目的构建、报告和文档...
2. **导入Jetty Bundle**:Jetty提供了专门的OSGI版本,可以在Maven仓库或官方网站找到。你需要把这些bundle添加到OSGI容器的启动配置中,确保它们在运行时被正确加载。 3. **创建Web应用**:创建一个标准的Java ...
在IntelliJ IDEA中,我们需要使用OSGi插件如Bndtools或Apache Felix插件来创建OSGi Bundle。首先,创建一个新的Maven或Gradle项目,并在pom.xml或build.gradle文件中添加对应的OSGi依赖。 **3. 编写OSGi服务** ...
标签提到“源码”和“工具”,这可能意味着内容包含了如何使用特定的IDE或构建工具(如Eclipse或Maven)进行OSGi开发,以及如何阅读和理解OSGi Bundle的源代码。 9. **EOFFICE.doc**: 压缩包中的文件名为EOFFICE...
1. **创建bundle项目**:使用如BndTools这样的工具,或者直接使用Maven或Gradle的OSGi插件,来设置bundle的MANIFEST.MF文件,定义bundle的导出和导入包。 2. **定义服务和组件**:使用DS或Spring的XML配置,声明...
- **构建与运行**:使用Maven或Gradle构建Bundle,然后在OSGi运行时环境中启动。 通过阅读《Spring OSGi 入门.pdf》和实践samples中的示例,你可以逐步掌握如何在OSGi环境中使用Spring框架。理解并熟练运用Spring ...