A.2. 设置红帽 Fuse OSGi 项目


概述

用于构建 OSGi 捆绑包的 Maven 项目可以是一个简单的单级别项目。它不需要任何子项目。但是,它要求您执行以下操作:

  1. 捆绑包插件添加到 POM 中。
  2. 指示 Maven 将结果打包为 OSGi 捆绑包。
注意

您可以使用几个 Maven archetypes 设置项目,使用适当的设置。

目录结构

构建 OSGi 捆绑包的项目可以是单个级别项目。它仅要求您有一个顶级 POM 文件和 src 文件夹。与所有 Maven 项目中一样,您可以将所有 Java 源代码放在 src/java 文件夹中,并将任何非 Java 资源放在 src/resources 文件夹中。

非 Java 资源包括 Spring 配置文件、JBI 端点配置文件和 WSDL 合同。

注意

使用 Apache CXF、Apache Camel 或其他 Spring 配置的 bean 的 Red Hat Fuse OSGi 项目还包括一个 beans.xml 文件,位于 src/resources/META-INF/spring 文件夹中。

添加捆绑包插件

在使用捆绑包插件前,您必须添加对 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 的依赖性

将捆绑包插件添加到项目中

配置插件,以使用项目的工件 ID 作为捆绑包的符号名称

配置插件,使其包含捆绑类导入的所有 Java 软件包;也导入 org.apache.camel.osgi 软件包

配置插件以捆绑列出的类,但不将它们包含在导出的软件包列表中

注意

编辑配置,以满足您的项目要求。

有关配置捆绑包插件的详情,请参考 第 A.3 节 “配置捆绑包插件”

激活捆绑包插件

要让 Maven 使用捆绑包插件,请指示它将项目的结果打包为捆绑包。为此,可将 POM 文件的 packaging 元素设置为 捆绑包

有用的 Maven archetypes

有几个 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 CXFdl-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 创建一个项目来构建部署到红帽 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.