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

如何配置Jenkins将JAR包自动上传至Maven仓库(Archiva)

解决Jenkins自动上传JAR到Archiva而非WAR的问题

我来帮你搞定这个问题!核心是先调整Maven的配置,让它只把JAR包作为部署目标,再配合Jenkins的命令执行逻辑就能解决。下面分步骤说明:

一、先从Maven配置入手(根源解决)

Jenkins本质是调用Maven命令执行部署,所以先让Maven明确只上传JAR,而非默认的所有打包产物。

方法1:直接配置maven-deploy-plugin指定部署构件

在你的pom.xml的build节点下,添加或修改maven-deploy-plugin的配置,明确指定要部署的JAR文件:

<build>
  <plugins>
    <!-- 保留你原本生成WAR、JAR的插件配置 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>3.1.1</version>
      <configuration>
        <!-- 只部署指定的JAR构件 -->
        <artifacts>
          <artifact>
            <file>${project.build.directory}/${project.build.finalName}.jar</file>
            <type>jar</type>
            <classifier></classifier>
          </artifact>
        </artifacts>
      </configuration>
    </plugin>
  </plugins>
</build>

这样配置后,Maven执行deploy命令时,只会上传你指定的JAR文件,WAR包会被跳过。

方法2:用Maven Profile区分打包与部署(更灵活)

如果需要保留WAR包的生成,但只在部署阶段上传JAR,可以创建专属Profile:

<profiles>
  <profile>
    <id>deploy-jar-only</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <artifacts>
              <artifact>
                <file>${project.build.directory}/${project.build.finalName}.jar</file>
                <type>jar</type>
              </artifact>
            </artifacts>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

后续Jenkins执行命令时,激活这个Profile即可。

二、Jenkins端的配置调整

1. 基础Maven项目配置

如果是用Jenkins的「Maven项目」类型:

  • 在「构建」步骤中,将目标改为:
    mvn clean deploy -P deploy-jar-only
    
    (如果用了方法1的直接配置,去掉-P deploy-jar-only即可)
  • 确保Jenkins服务器已配置Archiva的仓库凭证:
    在Jenkins全局配置的「Maven」部分,或者在项目的pom.xml中先配置仓库地址:
    <distributionManagement>
      <repository>
        <id>archiva-releases</id>
        <url>http://你的Archiva地址/repository/internal/</url>
      </repository>
      <snapshotRepository>
        <id>archiva-snapshots</id>
        <url>http://你的Archiva地址/repository/snapshots/</url>
      </snapshotRepository>
    </distributionManagement>
    
    然后在Jenkins服务器的~/.m2/settings.xml中添加对应凭证:
    <servers>
      <server>
        <id>archiva-releases</id>
        <username>你的Archiva账号</username>
        <password>你的Archiva密码</password>
      </server>
      <server>
        <id>archiva-snapshots</id>
        <username>你的Archiva账号</username>
        <password>你的Archiva密码</password>
      </server>
    </servers>
    

2. Jenkins Pipeline配置(如果用流水线)

如果是用Pipeline脚本,示例如下:

pipeline {
  agent any
  tools {
    maven 'Maven-3.8.6' // 替换成你Jenkins中配置的Maven名称
  }
  stages {
    stage('Build Packages') {
      steps {
        sh 'mvn clean package' // 生成WAR和JAR
      }
    }
    stage('Deploy JAR to Archiva') {
      steps {
        sh 'mvn deploy -P deploy-jar-only' // 仅上传JAR
      }
    }
  }
}

三、验证

执行Jenkins构建后,去Archiva的对应仓库(发布版/快照版)查看,应该能看到JAR包已经上传,WAR包不会出现在仓库中。如果有问题,查看Jenkins的构建日志,看Maven的deploy阶段输出,确认是否只处理了JAR文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:38:06