当前位置: 首页 > 面试题库 >

Maven版本插件失败:源工件被部署两次

姜乐家
2023-03-14
问题内容

我们在hudson上使用了Maven发布插件,并试图实现发布过程的自动化。发布:准备工作正常。当我们尝试执行release:perform时,它会失败,因为它尝试将源工件两次上载到存储库。

我尝试过的事情

  1. 从超级pom中删除确实包含maven源插件的配置文件(不起作用)
  2. 在hudson上将发布目标指定为-P!attach-source release:prepare release:perform。我认为这将使源插件无法执行。(不工作)。
  3. 尝试将插件阶段指定为超级pom中的某个不存在的阶段(无效)
  4. 尝试将插件配置forReleaseProfile指定为false。(猜猜怎么着?没用过)

它仍然会吐出此错误。

[INFO] [DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] [DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] [DEBUG] Checking for pre-existing User-Agent configuration.
[INFO] [DEBUG] Adding User-Agent configuration.
[INFO] [DEBUG] not adding permissions to wagon connection
[INFO] Uploading: http://xx.xx.xx.xx:8081/nexus/content/repositories/releases//com/yyy/xxx/hhh/hhh-hhh/1.9.40/hhh-hhh-1.9.40-sources.jar
[INFO] 57K uploaded  (xxx-xxx-1.9.40-sources.jar)
[INFO] [DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] [DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] [DEBUG] Checking for pre-existing User-Agent configuration.
[INFO] [DEBUG] Adding User-Agent configuration.
[INFO] [DEBUG] not adding permissions to wagon connection
[INFO] Uploading: http://xx.xxx.xx.xx:8081/nexus/content/repositories/releases//com/xxx/xxxx/xxx/xxx-xxx/1.9.40/xxx-xxx-1.9.40-sources.jar
[INFO] [DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [ERROR] BUILD ERROR
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Error deploying artifact: Authorization failed: Access denied to: http://xx.xxx.xx.xx:8081/nexus/content/repositories/releases/com/xxx/xxx/xxx/xxx-config/1.9.40/xxx-xxx-1.9.40-sources.jar

对此的任何帮助将不胜感激。


问题答案:

尝试跑步mvn -Prelease-profile help:effective-pom。您会发现您有两个执行部分maven-source- plugin

输出将如下所示:

    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <version>2.0.4</version>
      <executions>
        <execution>
          <id>attach-sources</id>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
        <execution>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

要解决此问题,请找到您使用过的所有地方maven-source-plugin,并确保使用“ id”附加源,使其与发布配置文件相同。然后这些部分将被合并。

最佳实践表明,要获得一致性,您需要在项目的根POM中的build> pluginManagement中而 不是
在子poms中进行配置。在子pom中,您只需在build> plugins中指定要使用maven-source-plugin,但不提供执行。

在房间pom.xml中:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <!-- This id must match the -Prelease-profile id value or else sources will be "uploaded" twice, which causes Nexus to fail -->
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>    
  </pluginManagement>
</build>

在子pom.xml中:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
    </plugin>
  </plugins>
</build>


 类似资料:
  • 问题内容: 当我尝试部署应用程序时,出现以下错误: 问题答案: 您必须在MAVEN_HOME / conf / settings.xml节服务器中验证您的凭据 id必须与pom.xml中的分发管理中的id匹配

  • 问题内容: 我正在尝试使用Maven版本插件2.0标记版本,并希望将生成的jar部署到存储库。 我被困住了,得到这个神秘的错误: 标签文件夹确实存在并且为空 我执行了命令以确保重新运行 每次遇到错误时,我都会执行以使一切恢复正常 看来这不是一个凭证问题,pom文件已被有效删除,并且scm信息已切换到tag文件夹。 奇怪的是,我不了解如何提交pom文件,因为我既未在pom中也未在maven本地安装中

  • 我有一个简单的POM(见下文)。当我执行mvn部署时,我得到这个错误: [错误]无法执行目标组织。阿帕奇。专家plugins:maven deploy plugin:2.7:project piccolotest上的部署(默认部署):部署失败:未在POM inside distributionManagement元素或-DaltDeploymentRepository=id::layout::ur

  • 我是的长期用户,如果单元测试失败,它将不会发布(也就是将JAR部署到maven repo)。 出于各种原因,我只想使用maven deploy插件,但显然,即使中存在测试失败,我仍将部署该插件。 结果而不只是 编辑它似乎是詹金斯的问题..不能繁殖 我不确定Jenkins为什么或如何强制maven构建在测试失败时继续(我假设这是为了报告),但它没有显示为使其继续而传递的任何选项。这似乎只有当詹金斯说

  • 我试图使用maven shade插件构建uber jar(构建docker映像),并将项目jar部署到maven存储库。我不想将uber jar部署到maven Repo。因此,要么我需要能够从maven deploy插件中排除特定文件,要么让maven shade插件将uber jar放在不同的位置,这样deploy插件就不会接收到它。 这两件事都有可能吗?

  • 经过几天的研究,接近自杀倾向在这里我的问题,真的真的希望我太愚蠢了,不能自己找到问题.... 安装程序: Windows7 / 专家 3.2.3 / jdk 1.7.0_60 (64 位) / 人工 3.5.0 问题: - mvn 全新安装部署 -- 干杯 j. 日志: SETTINGS.XML POM.XML http://maven.apache.org/xsd/maven-4.0.0.xsd