【发布时间】:2018-03-31 11:38:09
【问题描述】:
我已经开始使用 travis-ci 来自动化我的构建。我有几个开源项目,它们都部署到 nexus sonatype 从那里到 maven Central。它们都是使用 Maven 构建并使用 github 作为 repo 的 Java 项目。 多年来我一直在手动执行此操作,并且我有适当的密钥和登录名,并且我的 pom 是兼容的等。 实现第一个很容易,它是single module project,它可以很好地构建和部署。然后我做了第二个,a multi module project,并以几乎相同的方式工作。然而,我的第三个让我感到困惑。 在这个东西上构建的 maven 有点棘手,但它在本地运行良好,我什至让它在 travis 上成功运行实际构建。但是部署不起作用。 问题是当它尝试连接到 nexus sonatype 时出现授权错误:
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project madura-bundles:
Failed to deploy artifacts: Could not transfer artifact nz.co.senanque:madura-bundles:pom:4.5.6 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/):
Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/nz/co/senanque/madura-bundles/4.5.6/madura-bundles-4.5.6.pom.
Return code is: 401, ReasonPhrase: Unauthorized.
我似乎没有正确设置我的 sonatype 凭据。但我的设置方式与其他两个项目的设置方式相同。具体来说,我进入 Nexus Sonatype 并获取我的访问用户令牌并将它们添加到我的环境中(SONATYPE_USERNAME 和 SONATYPE_PASSWORD,我删除了这两个并重新输入它们以防错字)。我还在我的本地 Maven 设置文件中添加了对那些的引用:
...
<server>
<id>ossrh</id>
<username>${env.SONATYPE_USERNAME}</username>
<password>${env.SONATYPE_PASSWORD}</password>
</server>
...
本地 maven 设置文件是我项目中的一个文件, .travis.yml maven 命令引用它。 travis.yml 文件具有与其他两个(工作)项目相同的部署部分,除了我一直在添加额外的位以尝试使其工作。但是那里的差异看起来都不相关。工作部署如下所示:
deploy:
provider: script
script: "mvn versions:set -DnewVersion=${TRAVIS_TAG} && mvn clean deploy -B -U -P release --settings travis/settings.xml"
on:
tags: true
所以只有在 repo 被标记并且它使用标记作为版本号时才会启动。在其他项目中,这工作正常,但在我试图开始工作的项目中却不行。该标签确实触发了部署,但部署失败。 有谁知道为什么我在一个项目上部署而不是另一个项目?感谢您的帮助。
【问题讨论】: