【问题标题】:Maven does not delete extra artifacts from repository serverMaven 不会从存储库服务器中删除额外的工件
【发布时间】:2017-10-16 06:07:44
【问题描述】:

我使用 mvn deploy 命令在存储库服务器上部署了我的 java 项目工件。当我这次部署工件(发布版本)时,我还使用以下代码 sn-p 部署了 javadocs 和源代码。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </build>

现在我通过在 sn-p 上面的评论部署了相同的项目(相同的发布版本),maven dint 删除了额外的工件(源代码和 javadocs)。这是预期的吗?

【问题讨论】:

  • 如果不应该覆盖/替换或删除发布版本,因为发布是不可变的。如果您更改/修复了错误等,这意味着您必须使用不同的版本...

标签: maven maven-metadata


【解决方案1】:

这是正常行为。

您不应重新部署已发布的版本。原因如下:

  • 其他开发人员和持续集成 (CI) 服务器可能已经下载了此版本的工件并将其保存在本地构建工具的缓存中(Maven、Ivy、SBT、Gradle 等)。如果发布的版本已下载到本地缓存中,这些构建工具将永远再次检查远程。因此,他们永远不会知道您部署了同一工件的新版本。
  • 可能存在已经依赖于您的工件并包含它的构建和程序集。这可能是打包在 WAR/JAR 中,甚至可以在 jar 中隐藏。
  • 如果您重新部署相同的版本,您可能会破坏用户交给您的调试数据。如果某些开发人员的缓存中没有 jar 并重建它所基于的标记,并且所有依赖项都在本地获取和缓存,则堆栈跟踪和线程转储之类的东西将被关闭,开发人员将浪费宝贵的时间找出问题所在 a) 他们的环境和 b) 调试数据。
  • 如果您重新部署已发布的版本,开发人员会看不起您。这是一种众所周知的不良做法,应始终避免,除非您在 5 分钟前刚刚发布并且完全确定没有其他人在使用此代码。

当您意识到您的代码存在问题并且您已经发布时,建议的做法(除非您使用暂存存储库)只是部署编号递增的新版本。您部署新版本的频率越高(当然是有原因的),您的库/产品的用户就越有信心开发是活跃的并且事情(希望)已经修复。默默地重新部署相同的版本肯定会导致混乱和不眠之夜。

此外,Maven 不会:

  • 删除工件
  • 从您的 maven-metadata.xml 文件中删除条目

这取决于你。如果已部署,您需要使用工件存储库管理器重建元数据(除非这是快照)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多