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

如何在Bamboo CI中动态使用mvn deploy:file部署自定义Nexus构件?

自定义Jar包部署到Nexus的动态版本解决方案

方案一:修复pom中maven-deploy-plugin的权限问题并动态复用项目版本

如果想通过mvn clean deploy直接完成部署,先解决权限问题,同时让插件自动读取pom版本:

  1. 检查CI环境的Maven settings.xml,确保其中配置的${targetrepositoryid}对应的账号拥有Nexus仓库的deploy权限,并且在CI执行时通过-s参数指定该配置文件(比如mvn clean deploy -s /opt/maven/settings.xml)。
  2. 调整插件配置,直接使用Maven内置的${project.version}变量获取当前项目版本,无需手动拼接revision和changelist:
<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>deploy-jar</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <file>${project.build.outputDirectory}/my-customized.jar</file>
                <groupId>com.test.project</groupId>
                <artifactId>my-customized-service</artifactId>
                <version>${project.version}</version>
                <repositoryId>${targetrepositoryid}</repositoryId>
                <url>${targeturl}</url>
                <packaging>jar</packaging>
                <generatePom>false</generatePom>
            </configuration>
        </execution>
    </executions>
</plugin>

${project.version}会自动继承pom中定义的版本(包括revision+changelist的拼接结果),实现版本动态同步。

方案二:命令行方式动态获取pom版本

如果倾向于保留直接执行deploy:deploy-file的方式,可通过Maven的help:evaluate命令自动提取pom版本,再传入部署命令:
在Bamboo的脚本执行步骤中运行以下命令:

# 从pom.xml中提取项目版本,输出纯文本结果
PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)

# 执行部署,动态带入版本号
mvn clean install deploy:deploy-file \
  -Dfile=${project.build.outputDirectory}/my-customized.jar \
  -DgroupId=com.test.project \
  -DartifactId=my-customized-service \
  -Dversion=${PROJECT_VERSION} \
  -DrepositoryId=${targetrepositoryid} \
  -Durl=${targeturl} \
  -Dpackaging=jar \
  -DgeneratePom=false

此方法无需修改pom插件配置,全程通过命令行动态获取版本,避免手动维护版本号。

关键注意事项

  • 确保CI环境中Maven能正确访问pom.xml文件,路径配置无误。
  • Nexus权限问题需确认账号权限:必须拥有目标仓库的部署(deploy)权限,而非仅读取权限。
  • 若使用Maven版本管理(如revision、changelist属性),${project.version}会自动处理版本拼接,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:43:10