【问题标题】:maven deploy:deploy-file working but maven deploy not workingMaven 部署:部署文件工作,但 Maven 部署不工作
【发布时间】:2019-05-18 18:50:39
【问题描述】:

我正在尝试使用命令将 maven 工件部署到 Artifactory 存储库中:maven deploy。

我遵循了 Maven 文档和 JFrog 中的说明:

https://maven.apache.org/plugins/maven-deploy-plugin/usage.html

https://www.jfrog.com/confluence/display/RTF/Maven+Repository#MavenRepository-DeployingArtifactsThroughArtifactory

目前,maven deploy:deploy-file 有效。

我假设 settings.xml 中存储的凭据和相应的存储库 ID 是正确的。

但是在运行 maven deploy 时出现错误:

[错误] 无法在项目 my-app 上执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy):无法部署工件:无法传输工件 com .mvn.deployment:my-app:jar:1.0-20190518.184733-1 从/到快照

返回码是:401,ReasonPhrase:未经授权。 -> [帮助 1]

您知道为什么 deploy-file 工作而 deploy 不工作吗?

谢谢

maven 部署:部署文件工作:

mvn deploy:deploy-file -Durl=REPO_URL \
                      -DrepositoryId="snapshots" \
                      -Dfile=PATH_TO_JAR \
                      -DgroupId="Project" \
                      -DartifactId="test-project" \
                      -Dversion="0.0.1-SNAPSHOT"

虽然 mvn deploy 给出错误:

mvn deploy

ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-
plugin:2.8.2:deploy (default-deploy) on project my-app: Failed to deploy 
artifacts: Could not transfer artifact 
com.mvn.deployment:my-app:jar:1.0-20190518.184733-1 from/to snapshots

Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

更新:

我使用不同版本的 maven 进行了一些测试,发现问题出现在 3.5.0 版本中,mvn deploy 命令适用于 maven 3.3.9,我认为它与 3.5 版本中的新版本 maven-wagon 有关。 0 他们将 Maven Wagon 从 2.10 升级到 2.12。

通过将此配置添加到我的 pom.xml mvn deploy 工作:

  <extension>
     <groupId>org.apache.maven.wagon</groupId>
     <artifactId>wagon-http</artifactId>
     <version>2.10</version>
  </extension>

【问题讨论】:

  • 您没有权限在 Artifactory 中上传工件。您必须获得适当的凭据和授权才能上传
  • 我认为我有正确的权限,通过使用 maven deploy:deploy-file 我成功上传了一个 jar 文件。
  • 所以现在它对你有用。如果你愿意,你可以更新答案。
  • 明确一点,maven deploy:deploy-file 工作正常,maven deploy 不工作。
  • 你怎么称呼deploy:deploy-file

标签: java maven deployment artifactory http-status-code-401


【解决方案1】:

我使用不同版本的 maven 进行了一些测试,发现问题出现在 3.5.0 版本中,mvn deploy 命令适用于 maven 3.3.9,我认为它与 3.5 版本中的新版本 maven-wagon 有关。 0 他们将 Maven Wagon 从 2.10 升级到 2.12。

通过将此配置添加到我的 pom.xml mvn deploy 作品:

<build>
     <plugins>
         <!-- It is a good idea to also set the maven-deploy-plugin version here -->
     </plugins>
     <extensions>
         <extension>
             <groupId>org.apache.maven.wagon</groupId>
             <artifactId>wagon-http</artifactId>
             <version>2.10</version>
         </extension>
     </extension>
</build>

感谢 Adrien 提供 maven-deploy-plugin 版本建议。

【讨论】:

    【解决方案2】:

    我确认,你的答案是正确的。 mvn deploy:deploy 不使用凭据(即使在 settings.xml 中正确指定)上传到存储库,从而产生 Failed to deploy artifacts: Could not transfer artifact: Failed to transfer file xyz.jar with status code 401 错误。

    • mvn deploy:deploy-file 工作,
    • mvn deploy:deploy 不起作用:它不使用 settings.xml 中的用户/密码上传到存储库。

    你的解决方案是正确的:

    <build>
         <plugins>
             <!-- It is a good idea to also set the maven-deploy-plugin version here -->
         </plugins>
         <extensions>
             <extension>
                 <groupId>org.apache.maven.wagon</groupId>
                 <artifactId>wagon-http</artifactId>
                 <version>2.10</version>
             </extension>
         </extension>
    </build>
    

    此答案基于 Hamza 的工作。

    【讨论】:

    • 我已更新您的帖子,以指明您指的是谁(“您”和“您的”)并提供作品的署名。如果我弄错了,请随时修改。无需进一步道歉 - 此处允许重复使用材料(带有署名)。
    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 2013-02-21
    • 2013-08-13
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多