【问题标题】:Maven deploy: deployment should fail if artifact already existsMaven 部署:如果工件已经存在,部署应该会失败
【发布时间】:2018-09-08 03:45:23
【问题描述】:

如果我将 pom.xml 配置如下:

        <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.1</version>
            <executions>
                <execution>
                    <id>default-deploy</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <serverId>nexus</serverId>
                <nexusUrl>https://nexus/</nexusUrl>
                <skipStaging>false</skipStaging>
            </configuration>
        </plugin>

然后发生的事情是在执行 mvn deploy -这将在 Nexus 上部署 projectName-1.0-20180323.065217-1.jar 并且下一个部署将在 nexus 上部署 projectName-1.0-20180323.065217-2.jar。

是否可以检查快照版本(在本例中为 1.0)是否已存在于 nexus 存储库中(并给出无法部署该版本的失败消息)。

部署的版本应命名为 projectName-1.0.jar 而不是 projectName-1.0-20180323.065217-1.jar

【问题讨论】:

  • 欢迎来到stackoverflow。 :) 我试图编辑您的帖子以使其更易于理解。请阅读并确保它对您有意义。您的问题似乎通常不清楚......但我对 Maven 或 Nexus 也一无所知......所以可能是我。 :)
  • 感谢 Boober Bunz .. 看起来不错
  • 首先为什么要配置部署插件?我们通常不需要这样做。只需定义已经由生命周期处理的 maven-deploy-plugin 的版本。此外,根据定义,SNAPSHOT 旨在被覆盖,因为它意味着正在开发中。如果您希望拥有无法被覆盖(不可变)的工件,则这称为根本无法修改的发布。
  • 我需要提供特定于项目的nexusUrl,并且我正在使用maven调用程序来部署应用程序。
  • @DeeptiPillai 你不需要显式配置部署插件,你只需要给distributionManagement标签来提供nexus Url

标签: maven deployment


【解决方案1】:

如果要上传的工件已经在仓库中,mvn deploy 将失败

注意:仅当您作为“RELEASE”而不是“SNAPSHOT”上传时。

您的构建可以首先检查该发行版本是否存在:

mvn 依赖:get -Dartifact=g:a:v -o -DrepoUrl=file://path/to/your/repo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多