在单个 pom 中部署多个文件

Deploying multiple files in single pom

我有一个 pom,它获取一些 zip,解压缩并部署里面的 5 个工件(jar + pom)。

它看起来像:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <executions>
                    <execution>
                        <id>default-deploy</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>deploy-api-jar</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>deploy-file</goal>
                        </goals>
                        <configuration>
                            <file>target/xxx.jar</file>
                            <pomFile>target/xxx/pom.xml</pomFile>
                            <sources>target/xxx-sources.jar</sources>
                            <repositoryId>${nexus-repository-id}</repositoryId>
                            <url>http://${nexus.deploy.server}/${nexus-repository-path}</url>
                        </configuration>
                    </execution>

所以我对 5 个不同的工件执行了 5 次执行。

它适用于第一个工件,但随后失败,因为它尝试再次上传:

[INFO] Uploading: http://www.zzz.com:8081/nexus/content/repositories/mobile-r/xxx/server/deployall/8.1.17/deployall-8.1.17-dependencies.dot

它失败并显示 400 BadRequest,因为 depedencies.dot 8.1.17 已经部署。

为什么它会尝试在每个工件之间上传 depedencies.dot?我可以禁用它吗?

编辑:回答漏了重点

它失败了,因为 Maven 和你的 nexus 只允许一个工件用于给定的一组坐标。

所以,如果你想把它们都部署到同一个坐标,你需要给它们不同的分类器。

你想要做的是高度不规则地使用构建脚本。 Maven 假定来自单个 POM 的所有工件都具有相同的坐标(但不同的分类器)。如果需要,您可以将工件附加到项目并使用生命周期中的正常 deploy:deploy 任务上传它们。您可以为此使用 build-helper-maven-plugin

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.12</version>
  <executions>
    <execution>
      <id>attach-artifacts</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>file1</file>
            <type>extension of your file</type>
            <classifier>x</classifier>
          </artifact>
          <artifact>
            <file>file2</file>
            <type>extension of your file</type>
            <classifier>y</classifier>
          </artifact>
          ...
          </artifacts>
        </configuration>
      </execution>
    </executions>
  </plugin>

但是由于您想上传 5 个分离的工件,POM 不是您想要的,请改用 bash 脚本进行上传(多次调用 mvn deploy:deploy-file)。