当前位置: 首页 > 知识库问答 >
问题:

升级的构建插件将工件部署到存储库

祁俊拔
2023-03-14

我们有一个Jenkins Maven构建运行在一个Windows从机上,它在每次提交时都运行Maven包。我正在尝试使用升级的构建插件来将升级的构建部署到nexus发布存储库中。

我设置了“升级生成时...”要手动批准和“将工件部署到Maven存储库”的操作,请将存储库URL设置为“http://example.com:8081/nexus/content/repositories/releases/”,并将repo id设置为“release”。但是,当批准被触发时,我们会得到以下堆栈跟踪:

[信息]在http://example.com:8081/nexus/content/repositories/releases/(id=release,uniqueVersion=true)中部署主项目Artifactid-1.0.2.pom上载:http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom错误:无法部署项目:无法将项目groupid:artifactid:pom:1.0.2从/到release(http://example.com:8081/nexus/content/repositories/releases/):无法传输文件:HTTP://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom。返回代码为:401,ReasonPhrase:未授权.ArtifactDeployer.ArtifactDeploymentException:无法部署项目:无法将项目groupid:ArtifactId:pom:1.0.2从/到发行版(http://example.com:8081/nexus/content/repositories/releases/):无法传输文件:http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom。返回代码为:401,ReasonPhrase:未授权.在org.apache.maven.artifact.deployer.deploy(DefaultartIfactdeployer.java:143)在hudson.maven.reporters.mavenartifactrecord.deploy(Mavenartifactrecord.java:193)在hudson.maven.redeployPublisher.perform(redeployPublisher.176)在hudson.plugins.promoted_builds.promission$runnerimpl.build(promotor.java:282)在hudson.plugins.promoted_builds.promission$runnerimpl.build(promotor.java:224)在build.java:533)在hudson.model.run.execute(run.java:1740)在hudson.model.run.run(run.java:1678)在hudson.plugins.promoted_builds.promotor.run(promotor.java:174)在hudson.model.resourcecontroller.execute(resourcecontroller.java:89)在hudson.model.executor.run(executor.java:240)

如果我将升级操作更改为触发maven deploy,则会重新运行构建,并且部署目标按预期工作,如果我添加了git发布者,则在身份验证时也会失败。如果由运行Jenkins的用户在本地执行,这两个操作都将成功。

升级的builds插件如何确定部署的身份验证细节?

共有1个答案

丰赞
2023-03-14

执行需要使用Maven进行身份验证的部署,您需要在settings.xml文件中配置具有适当信息的服务器。因此,使用以下内容修改(或创建)用户设置(在${user.home}/.m2/settings.xml下):

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <servers>
    <server>
      <id>releases</id>
      <username>my_login</username>
      <password>my_password</password>
    </server>
  </servers>
  ...
</settings>

这定义了一个名为release的服务器配置,该配置具有给定的用户名和密码。如果需要,您可以使用密码或私钥代替。

然后,您需要确保Jenkins正在正确读取您的Maven设置文件。在Jenkins2.8下,您可以导航到“Jenkins>Global Tool Configuration”。

 类似资料:
  • 我正在将我的Maven构建的Java 8应用程序升级到Java 11。在我的POM中,我指定: 当我使用普通的Maven构建调用来构建我的应用程序时: 我得到: 因此,看起来<code>maven编译器插件:3.8.1 那么,我怎么知道是什么把它拉进来并使用它呢?或者如果这不是正在发生的事情,那是什么,我该如何修复它?

  • 我有一个pom构建了一个jar,并使用rpm maven插件将其打包成rpm。jar既用作独立应用程序,也用作其他应用程序的依赖项,因此我需要将这两个构件部署到本地Nexus。我希望将jar部署到标准的maven releases/maven snapshots存储库中,但我希望将rpm部署到同一个Nexus中的另一个存储库中,该存储库仅用于我们的rpm。 我的专业知识相当基础,但我不知道如何做到

  • 需要根据特定环境从两个远程存储库部署工件。所以我尝试在pom.xml的分发管理中使用配置文件 尝试激活个人资料 我得到以下错误。 部署失败:存储库元素没有指定在POM内部分布管理元素或在-DaltDeploymentRepository=id::布局::url参数 似乎pom无法识别分发管理标签。 但它在没有单一分销管理的配置文件的情况下运行良好。 有谁能给点建议吗? 参考 设置Maven以允许轻

  • 移动插件开发-插件的构建和部署 概述 移动插件的开发环境操作 移动插件开发-插件的构建和部署 更新时间:2018-07-03 21:22:57 概述 移动插件编码完成后,即可上传构建包到平台进行在线构建和部署,最终将插件发布为线上可用的资源。 Link Develop为开发者提供了开发环境和生产环境的隔离,开发环境仅供开发者做开发调试使用,插件正式线上可用,需要开发者在生产环境进行正式发布。 移动

  • 问题内容: 我们有许多Java项目,这些项目是使用Jenkins构建的CI。这些都可以部署到我们自己的Nexus服务器上。问题是,我们需要将这些库提供给第三方,但没有源代码。因此,对于每个项目,在Nexus中,我们都有: __为我们的开发人员 发布 存储库(包括已部署的源代码) __我们开发人员的 快照 存储库(包括已部署的源代码) 第三方发布 存储库(仅JAR + POM) (并且很高兴拥有):

  • 我们有许多Java项目,它们是由Jenkins构建的。这些都部署到了我们自己的Nexus服务器上。问题是,我们需要向第三方提供这些库,但没有源代码。因此,对于每个项目,在Nexus中,我们有: 为我们的开发人员发布存储库(包括部署的源代码) 我们开发人员的快照存储库(包括部署的源代码) 第三方发布存储库(仅限JAR POM) (最好有):第三方快照存储库(仅限JAR POM),用于第三方夜间构建