Maven maven-deploy-plugin 总是上传两次

Posted

技术标签:

【中文标题】Maven maven-deploy-plugin 总是上传两次【英文标题】:Maven maven-deploy-plugin always upload twice 【发布时间】:2015-04-09 01:52:26 【问题描述】:

将组件发布到 Nexus 存储库时出现问题,Maven 两次上传文件:

第一次使用 maven-deploy-plugin groupId/artifactId/version 参数(这就是我想要的) 第二次使用 pom groupId/artifactId/version 参数(这是我不想要的)

我使用以下命令启动打包/部署(请参阅底部的 pom.xml 文件):

mvn clean package deploy:deploy-file -e -f pom.xml

这是处理部署阶段时 maven 输出控制台的 sn-p(前 6 行是正确的,但请注意最后 2 行带有 pom groupId/artifactId/version):

[INFO] --- maven-deploy-plugin:2.8.2:deploy-file (default-cli) @ assemblage-playbook ---
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/1.0/COMPOSANT-A_1.0.tar.gz
Uploaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/1.0/COMPOSANT-A_1.0.tar.gz (2 KB at 2.7 KB/sec)
Downloading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml
Downloaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml (321 B at 4.6 KB/sec)
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml
Uploaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml (321 B at 1.6 KB/sec)
Downloading: http://urlRepo:8080/nexus/content/repositories/snapshots/com/com.mycompany/assemblage-playbook/1.0-SNAPSHOT/maven-metadata.xml
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/com/com.mycompany/assemblage-playbook/1.0-SNAPSHOT/assemblage-playbook-1.0-20150209.154427

这是我的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <artifactId>assemblage-playbook</artifactId>
    <packaging>pom</packaging>
    <name>assemblage-playbook</name>

    <parent>
        <groupId>com.mycompany</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../../../parent/pom.xml</relativePath>
    </parent>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.2</version>
                <configuration>
                    <descriptors>
                        <descriptor>assembly/playbook-assembly.xml</descriptor>
                    </descriptors>
                    <finalName>COMPOSANT-A-1.0</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <executions>
                    <execution>
                        <id>default-cli</id>
                        <phase>package</phase>
                        <goals>
                            <goal>deploy-file</goal>
                        </goals>
                        <configuration>
                            <file>target/COMPOSANT-A-1.0.tar.gz</file>
                            <repositoryId>nexus</repositoryId>
                            <groupId>COMPOSANTS</groupId>
                            <artifactId>COMPOSANT-A</artifactId>
                            <version>1.0</version>
                            <generatePom>false</generatePom>
                            <packaging>tar.gz</packaging>
                            <url>http://urlRepo:8080/nexus/content/repositories/snapshots</url>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

有什么办法解决吗?

感谢您的帮助。

[编辑]

使用命令行mvn deploy:deploy-file -e -f pom.xml,效果很好(whitout clean package),但我需要在部署前打包...

【问题讨论】:

哪个文件被上传了两次?我没有看到任何文件从 Maven 日志中上传了两次(仅上传和上传)。 ADMINAPP-15.1.0.3.tar.gz 文件,第二次重命名为 assemblage-composant-1.0-20150209.101242-1.tar.gz(pom 工件的名称) 为什么你在包阶段添加了maven-deploy-plugin。如果您想将工件部署到 nexus,让 maven 通过deploy 阶段完成这项工作。此外,compoant-admin 的配置文件看起来很奇怪,因为这会引起麻烦。 我这样做是因为我有其他组件,例如依赖于几个模块的“composant-admin”。如果我使用 maven deploy,每个模块都会被上传,我无法在运行时自定义组、工件项。 我只是更新了原始帖子以更清晰,因为你提到@khmarbaise 它并不清楚(你是对的^^) 【参考方案1】:

maven-deploy-plugin 上传您指定的文件,然后上传所有项目附加的工件。默认情况下,maven-assembly-plugin 将输出文件附加到项目附加的工件。这会为您进行两次上传。

解决方法是针对您的 maven-assembly-plugin 配置。

<attach>false</attach>

【讨论】:

以上是关于Maven maven-deploy-plugin 总是上传两次的主要内容,如果未能解决你的问题,请参考以下文章

无法执行目标org.apache.maven.plugins:maven-deploy-plugin:2.7:在项目上部署default-deploy

mavenmaven 项目 deploy 报错:Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7(示(代

maven deploy时报错

Maven FTP部署:无法创建目录

maven 打包 deploy 项目时 出现 401 Unauthorized

将 Maven 项目发布到 Github 包