You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Maven与Nexus仅部署RPM包,跳过JAR包的部署阶段?

解决maven-rpm-plugin部署时仅跳过JAR包上传的问题

我刚好处理过类似的场景,核心需求很明确:保留JAR打包步骤(因为RPM生成依赖它),但在deploy阶段只上传RPM包,跳过默认的JAR包上传。下面给你两种可靠的实现方式:

方案一:在pom.xml中永久配置

这种方式适合固定生产环境的构建规则,直接修改项目的pom.xml即可:

1. 禁用默认的JAR包部署插件

Maven默认的maven-deploy-plugin负责上传主构件(也就是你的JAR包),我们可以通过配置让它跳过执行,同时保留rpm-maven-plugin的部署逻辑:

<build>
  <plugins>
    <!-- 跳过默认JAR包的deploy上传 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>3.1.1</version>
      <configuration>
        <!-- 这个参数会让插件完全跳过deploy动作 -->
        <skip>true</skip>
      </configuration>
    </plugin>

    <!-- 确保rpm-maven-plugin在deploy阶段正常上传RPM -->
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>rpm-maven-plugin</artifactId>
      <version>2.2.0</version>
      <executions>
        <execution>
          <!-- 绑定到deploy阶段 -->
          <phase>deploy</phase>
          <goals>
            <goal>deploy</goal>
          </goals>
        </execution>
      </executions>
      <!-- 这里保留你原有的RPM配置(比如spec模板、依赖等) -->
    </plugin>
  </plugins>
</build>

关键说明:

  • maven-deploy-plugin的<skip>true</skip>只会跳过它自己的deploy动作,不会影响rpm-maven-plugin的deploy目标,因为两者是独立的插件。
  • 打包JAR的步骤(package阶段)完全不受影响,RPM生成所需的JAR文件会正常生成。

方案二:通过命令行参数临时跳过

如果不想修改pom.xml,或者只在特定构建场景(比如生产环境部署)中跳过JAR上传,可以在执行deploy命令时添加参数:

mvn deploy -Dmaven.deploy.skip=true

关键说明:

  • -Dmaven.deploy.skip=true是maven-deploy-plugin的内置参数,只会禁用它的上传逻辑,rpm-maven-plugin的deploy动作依然会执行。
  • 这种方式灵活,适合需要在不同环境切换构建规则的场景。

验证方法

执行完deploy后,可以登录Nexus仓库检查:

  • 对应项目的仓库中,只有RPM包被上传,没有JAR包的痕迹。
  • 本地target目录下,JAR包和RPM包都正常生成(确保RPM依赖的JAR存在)。

内容的提问来源于stack exchange,提问作者okno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:22:06