【问题标题】:Jenkins - deploy artifacts to Maven repositoryJenkins - 将工件部署到 Maven 存储库
【发布时间】:2017-08-08 14:13:16
【问题描述】:


我有一个基本的Springboot Maven 项目,我希望能够在本地部署它并进行 API 调用。
我有一台带有Jenkins 的远程Linux 机器,我能够正确构建我的应用程序。现在我想在同一台 linux 机器上部署这个构建,在某个文件夹 /deploy
现在我已经在 J​​enkins 上添加了一个 Post Build Action将工件部署到 Maven 存储库,它具有以下参数: 现在我没有对我的pom.xml 或我的专家settings.xml 进行任何更改。 我得到的错误如下:

[INFO] Deployment in http://localhost:8080/deploy (id=test2,uniqueVersion=true)
Deploying the main artifact reag.login-0.0.1-SNAPSHOT.jar
Downloading: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml
ERROR: Failed to retrieve remote metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml: Could not transfer metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml from/to deploymentRepo (http://localhost:8080/deploy): Access denied to: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden.
org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to retrieve remote metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml: Could not transfer metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml from/to deploymentRepo (http://localhost:8080/deploy): Access denied to: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden.

我正在工作的机器受用户名和密码保护,我试图将它们放在settings.xml 文件中,但没有任何变化。有谁知道使这个过程起作用的步骤是什么?
提前致谢。

【问题讨论】:

  • 问题出在这里:Access denied to: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden....检查您的凭据数据是否正确...
  • 顺便说一句:为什么不使用 Maven 来完成这项工作?

标签: maven jenkins deployment


【解决方案1】:

本地工件部署由mvn clean install 完成。 install 目标将您的工件复制到本地 maven 存储库(默认 [USER_HOME]/.m2/repository)。

如果您想将工件部署到另一个服务,例如 Nexus Maven Repository,那么您需要在您的 settings.xml 中部署并提供该机器的凭据,或者更好地为机器。

我认为 Jenkins 正在尝试进行远程部署,只有在您的机器(如 Nexus)上运行 Maven 存储库时才有效

【讨论】:

    【解决方案2】:

    “部署”在 Maven 用语中的意思是“将构建的工件及其元数据(例如 pom 文件)上传到存储库管理器。

    不是的意思是“将工件复制到您想要的任何位置”。

    因此,正如@funfried 所说,您实际上需要运行一个存储库管理器。

    如果是这种情况,那么以下是您设置 maven 配置的方式。

    Maven 通过 id 元素将凭据链接到服务器。

    您的 settings.xml 文件将设置您的凭据,如下所示:

    <servers>
        <server>
            <id>newhope-nexus</id>
            <username>steve</username>
            <password>{1T7Jmp/PBoQH4cvFjZDTaDe/F/Z+D9rJ925rf+3H1LY=}</password>
        </server>
    </servers>
    

    然后您的项目模型(项目 pom 或父 pom)应将其定义为 distributionManagement

    <distributionManagement>
        <repository>
            <id>newhope-nexus</id>
            <url>http://newhope:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>newhope-nexus</id>
            <url>http://newhope:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    

    请注意,id 都匹配。

    Jenkins 的mvn deploy 应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2014-11-02
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多