搜索

5.2. 修改现有 Maven 项目

download PDF

5.2.1. 概述

如果您已经有一个 Maven 项目,且您想要修改它以便生成 OSGi 捆绑包,请执行以下步骤:

5.2.2. 将软件包类型改为 bundle

通过将软件包类型改为项目的 pom.xml 文件中的 捆绑包,将 Maven 配置为生成 OSGi 捆绑包。将 packaging 元素的内容改为 捆绑包,如下例所示:

<project ... >
  ...
  <packaging>bundle</packaging>
  ...
</project>

此设置的影响是选择 Maven 捆绑包插件 maven-bundle-plugin,以执行此项目的打包。但是,除非将捆绑包插件明确添加到 POM 中,此设置本身不会起作用。

5.2.3. 在 POM 中添加捆绑包插件

要添加 Maven 捆绑包插件,请将以下示例 插件 元素复制并粘贴到项目的 pom.xml 文件的 project/build/plugins 部分:

<project ... >
  ...
  <build>
    <defaultGoal>install</defaultGoal>
    <plugins>
      ...
    <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>3.3.0</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}
            </Bundle-SymbolicName>
            <Import-Package>*</Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

其中,捆绑包插件由 instructions 元素中的设置进行配置。

5.2.4. 自定义捆绑包插件

有关为 Apache CXF 配置捆绑包插件的一些特定建议,请参考 第 5.3 节 “在捆绑包中打包 Web 服务”

5.2.5. 自定义 JDK 编译器版本

几乎需要在 POM 文件中指定 JDK 版本。如果您的代码使用 Java 语言的任何现代功能,如通用、静态导入等,且您已在 POM 中自定义 JDK 版本,则 Maven 将无法编译源代码。将 JAVA_HOMEPATH 环境变量设置为 JDK 的正确值不足,还必须修改 POM 文件。

要配置 POM 文件,以便它接受 JDK 1.8 中引入的 Java 语言功能,请在 POM 中添加以下 maven-compiler-plugin 插件设置(如果它们尚不存在):

<project ... >
  ...
  <build>
    <defaultGoal>install</defaultGoal>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.