将 Nexus 凭据绑定到 Jenkins 构建中的 Maven 部署作业
Binding nexus credentials to maven deploy job in jenkins build
我有一个 Maven pom 项目,在 pom.xml
中定义了 distributionManagement
部分
<project>
...
<distributionManagement>
<repository>
<id>my-repo</id>
<url>http://nexus.my.local/repository/my-private</url>
</repository>
</distributionManagement>
</project>
在 settings.xml
文件中我设置了 servers
部分
<servers>
<server>
<id>my-repo</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
在 jenkins 中,我将凭据绑定到这些变量
但是做 mvn clean deploy
给我以下错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project XY:
Failed to deploy artifacts:
Could not transfer artifact XY:pom:1.0.0 from/to my-repo (http://nexus.my.local/repository/my-private):
Failed to transfer file: http://nexus.my.local/repository/my-private/XY-1.0.0.pom.
Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
当我在构建之前在 shell 中回显变量 ${CI_DEPLOY_USERNAME}
时,它给了我 ****
输出 -> 我认为没问题。
我还应该在哪里提供变量?我项目的 settings.xml
是否在 maven deploy 命令中使用?
在 Maven 中使用环境变量作为属性需要它们以 env.
为前缀,所以它应该是:
<servers>
<server>
<id>my-repo</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
参考:
我有一个 Maven pom 项目,在 pom.xml
distributionManagement
部分
<project>
...
<distributionManagement>
<repository>
<id>my-repo</id>
<url>http://nexus.my.local/repository/my-private</url>
</repository>
</distributionManagement>
</project>
在 settings.xml
文件中我设置了 servers
部分
<servers>
<server>
<id>my-repo</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
在 jenkins 中,我将凭据绑定到这些变量
mvn clean deploy
给我以下错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project XY:
Failed to deploy artifacts:
Could not transfer artifact XY:pom:1.0.0 from/to my-repo (http://nexus.my.local/repository/my-private):
Failed to transfer file: http://nexus.my.local/repository/my-private/XY-1.0.0.pom.
Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
当我在构建之前在 shell 中回显变量 ${CI_DEPLOY_USERNAME}
时,它给了我 ****
输出 -> 我认为没问题。
我还应该在哪里提供变量?我项目的 settings.xml
是否在 maven deploy 命令中使用?
在 Maven 中使用环境变量作为属性需要它们以 env.
为前缀,所以它应该是:
<servers>
<server>
<id>my-repo</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
参考: