Maven不会从存储库服务器中删除额外的工件
我使用mvndeploy命令在存储库服务器上部署了java项目构件。当我这次部署工件(发布版本)时,我还使用下面的代码片段部署了javadocs和sourceMaven不会从存储库服务器中删除额外的工件,maven,maven-metadata,Maven,Maven Metadata,我使用mvndeploy命令在存储库服务器上部署了java项目构件。当我这次部署工件(发布版本)时,我还使用下面的代码片段部署了javadocs和source <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>
<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>
org.apache.maven.plugins
maven源插件
附加来源
罐子
org.apache.maven.plugins
maven javadoc插件
附加javadocs
罐子
现在我通过评论上面的代码片段部署了相同的项目(相同的发布版本),maven dint删除了额外的工件(源代码和javadocs)。这是预期的吗?这是正常的行为 您不应该重新部署已发布的版本。原因如下:
- 其他开发人员和持续集成(CI)服务器可能已经下载了此版本的工件,并将其保存在本地构建工具的缓存中(Maven、Ivy、SBT、Gradle等)。如果发布的版本已下载到本地缓存中,这些构建工具将永远不会在远程进行检查。因此,他们永远不会知道您已经部署了同一工件的新版本
- 可能存在已经依赖于您的工件并包含它的构建和程序集。这可以是打包在WAR/JAR中的文件,甚至可以是包装在JAR中的阴影
- 如果重新部署同一版本,可能会破坏用户交给您的调试数据。如果一些开发人员的缓存中没有jar,并且重新构建了它所基于的标记,并且所有依赖项都在本地获取和缓存,那么stacktraces和线程转储之类的事情将被关闭,开发人员将浪费宝贵的时间来找出a)他们的环境和b)调试数据的问题
- 如果您重新部署发布的版本,开发人员会看不起您。这是一个众所周知的糟糕做法,应该始终避免,除非您在5分钟前刚刚发布,并且非常确定还没有其他人在使用此代码
- 删除工件
- 从
文件中删除条目maven metadata.xml
这取决于你。如果已经部署了构件存储库管理器,则需要使用它重新构建元数据(除非这是快照)。这是正常行为 您不应该重新部署已发布的版本。原因如下:
- 其他开发人员和持续集成(CI)服务器可能已经下载了此版本的工件,并将其保存在本地构建工具的缓存中(Maven、Ivy、SBT、Gradle等)。如果发布的版本已下载到本地缓存中,这些构建工具将永远不会在远程进行检查。因此,他们永远不会知道您已经部署了同一工件的新版本
- 可能存在已经依赖于您的工件并包含它的构建和程序集。这可以是打包在WAR/JAR中的文件,甚至可以是包装在JAR中的阴影
- 如果重新部署同一版本,可能会破坏用户交给您的调试数据。如果一些开发人员的缓存中没有jar,并且重新构建了它所基于的标记,并且所有依赖项都在本地获取和缓存,那么stacktraces和线程转储之类的事情将被关闭,开发人员将浪费宝贵的时间来找出a)他们的环境和b)调试数据的问题
- 如果您重新部署发布的版本,开发人员会看不起您。这是一个众所周知的糟糕做法,应该始终避免,除非您在5分钟前刚刚发布,并且非常确定还没有其他人在使用此代码
- 删除工件
- 从
文件中删除条目maven metadata.xml
这取决于你。如果已经部署了构件存储库管理器,则需要使用它重新构建元数据(除非这是一个快照)。if不应覆盖/替换或删除发布版本,因为发布是不可变的。如果您已经更改/修复了一个bug等。这意味着您必须使用不同的版本…如果您不应该覆盖/替换或删除发布版本,因为发布是不可变的。如果您更改/修复了一个bug等,这意味着您必须使用不同的版本。。。