Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven不会从存储库服务器中删除额外的工件_Maven_Maven Metadata - Fatal编程技术网

Maven不会从存储库服务器中删除额外的工件

Maven不会从存储库服务器中删除额外的工件,maven,maven-metadata,Maven,Maven Metadata,我使用mvndeploy命令在存储库服务器上部署了java项目构件。当我这次部署工件(发布版本)时,我还使用下面的代码片段部署了javadocs和source <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>

我使用mvndeploy命令在存储库服务器上部署了java项目构件。当我这次部署工件(发布版本)时,我还使用下面的代码片段部署了javadocs和source

<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没有:

  • 删除工件
  • maven metadata.xml
    文件中删除条目

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

这是正常行为

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

  • 其他开发人员和持续集成(CI)服务器可能已经下载了此版本的工件,并将其保存在本地构建工具的缓存中(Maven、Ivy、SBT、Gradle等)。如果发布的版本已下载到本地缓存中,这些构建工具将永远不会在远程进行检查。因此,他们永远不会知道您已经部署了同一工件的新版本
  • 可能存在已经依赖于您的工件并包含它的构建和程序集。这可以是打包在WAR/JAR中的文件,甚至可以是包装在JAR中的阴影
  • 如果重新部署同一版本,可能会破坏用户交给您的调试数据。如果一些开发人员的缓存中没有jar,并且重新构建了它所基于的标记,并且所有依赖项都在本地获取和缓存,那么stacktraces和线程转储之类的事情将被关闭,开发人员将浪费宝贵的时间来找出a)他们的环境和b)调试数据的问题
  • 如果您重新部署发布的版本,开发人员会看不起您。这是一个众所周知的糟糕做法,应该始终避免,除非您在5分钟前刚刚发布,并且非常确定还没有其他人在使用此代码
当您意识到您的代码有问题并且已经发布时,建议的做法(除非您使用的是暂存存储库)是只部署一个数量递增的新版本。您部署新版本的频率越高(当然,有理由),您的库/产品的用户就越有信心开发是活跃的,事情(希望)是固定的。悄悄地重新部署同一版本肯定会导致混乱和不眠之夜

此外,Maven没有:

  • 删除工件
  • maven metadata.xml
    文件中删除条目

这取决于你。如果已经部署了构件存储库管理器,则需要使用它重新构建元数据(除非这是一个快照)。

if不应覆盖/替换或删除发布版本,因为发布是不可变的。如果您已经更改/修复了一个bug等。这意味着您必须使用不同的版本…如果您不应该覆盖/替换或删除发布版本,因为发布是不可变的。如果您更改/修复了一个bug等,这意味着您必须使用不同的版本。。。