A.2. 设置红帽 Fuse OSGi 项目
概述
构建 OSGi 捆绑包的 Maven 项目可以是一个简单的单级项目。它不需要任何子项目。但是,它需要您进行以下操作:
您可以使用多个 Maven archetypes 来使用适当的设置设置项目。
目录结构
构建 OSGi 捆绑包的项目可以是单一级别的项目。它仅要求您拥有顶级 POM 文件和 src
文件夹。如在所有 Maven 项目中,您要将所有 Java 源代码放在 src/java
文件夹中,并将任何非 Java 资源放在 src/resources
文件夹中。
非 Java 资源包括 Spring 配置文件、JBI 端点配置文件和 WSDL 合同。
使用 Apache CXF、Apache Camel 或其他配置的 Spring bean 的红帽 Fuse OSGi 项目还包括位于 src/resources/META-INF/spring
文件夹下的 Bean.xml
文件。
添加捆绑包插件
在使用 bundle 插件前,您必须添加对 Apache Felix 的依赖项。添加依赖项后,您可以将捆绑包插件添加到 POM 的插件部分。
例 A.1 “将 OSGi 捆绑包插件添加到 POM” 显示将捆绑包插件添加到您的项目中所需的 POM 条目。
例 A.1. 将 OSGi 捆绑包插件添加到 POM
... <dependencies> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.osgi.core</artifactId> <version>1.0.0</version> </dependency> ... </dependencies> ... <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> <Import-Package>*,org.apache.camel.osgi</Import-Package> <Private-Package>org.apache.servicemix.examples.camel</Private-Package> </instructions> </configuration> </plugin> </plugins> </build> ...
例 A.1 “将 OSGi 捆绑包插件添加到 POM” 中的条目如下:
添加对 Apache Felix 的依赖关系
将 bundle 插件添加到项目中
配置插件,以使用项目的工件 ID 作为捆绑包的符号链接名称
配置插件,使其包含由捆绑类导入的所有 Java 软件包;也导入 org.apache.camel.osgi 软件包
配置插件以捆绑列出的类,但不包含在导出的软件包列表中
编辑配置,以满足您的项目要求。
有关配置捆绑包插件的更多信息,请参阅 第 A.3 节 “配置捆绑插件”。
激活捆绑包插件
要让 Maven 使用 bundle 插件,以指示它将项目的结果打包为捆绑包。通过将 POM 文件的 打包
元素设置为 捆绑包 来实现此目的
。
有用的 Maven archetypes
Spring OSGi archetype
Spring OSGi archetype 为使用 Spring DM 构建 OSGi 项目创建通用项目,如下所示:
org.springframework.osgi/spring-bundle-osgi-archetype/1.1.2
您可以使用以下命令调用 archetype:
mvn archetype:generate -DarchetypeGroupId=org.springframework.osgi -DarchetypeArtifactId=spring-osgi-bundle-archetype -DarchetypeVersion=1.1.2 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache CXF code-first archetype
Apache CXF code-first archetype 创建一个项目,用于从 Java 构建服务,如下所示:
org.apache.servicemix.tooling/servicemix-osgi-cxf-code-first-archetype/2010.02.0-fuse-02-00
您可以使用以下命令调用 archetype:
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-code-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache CXF wsdl-first archetype
Apache CXF wsdl-first archetype 为从 WSDL 创建服务的项目创建一个项目,如下所示:
org.apache.servicemix.tooling/servicemix-osgi-cxf-wsdl-first-archetype/2010.02.0-fuse-02-00
您可以使用以下命令调用 archetype:
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-wsdl-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache Camel archetype
Apache Camel archetype 创建一个项目来构建部署到 Red Hat Fuse 中的路由,如下所示:
org.apache.servicemix.tooling/servicemix-osgi-camel-archetype/2010.02.0-fuse-02-00
您可以使用以下命令调用 archetype:
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-camel-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version