Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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/4/maven/6.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
Java Maven发布插件未在DependencyManager中更新快照_Java_Maven_Maven Release Plugin - Fatal编程技术网

Java Maven发布插件未在DependencyManager中更新快照

Java Maven发布插件未在DependencyManager中更新快照,java,maven,maven-release-plugin,Java,Maven,Maven Release Plugin,我有一个公司范围的父级pom,其中包含一个部分,该部分定义了在整个应用程序中应该使用的项目版本,其中一些是快照,有点像这样: <dependencyManagement> <dependencies> ... <dependency> <groupId>my.group</groupId> <artifactId>myArtifact</artifactId>

我有一个公司范围的父级pom,其中包含一个
部分,该部分定义了在整个应用程序中应该使用的项目版本,其中一些是快照,有点像这样:

<dependencyManagement>
  <dependencies>
    ...
    <dependency>
      <groupId>my.group</groupId>
      <artifactId>myArtifact</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    ...
  <dependencies>
</dependencyManagement>

那么您正试图释放不属于您正在准备的构建的一部分的工件?如果您执行relase:perform,插件应该将哪些工件上载到存储库(如果它们不存在)?(如果他们这样做了,你为什么要放快照版本?。
我认为正如@khmarbaise所说的,插件不会删除不属于你的反应器的快照(插件可能认为它们是第三方依赖的)

这是一条评论,我把它作为答案,因为我还没有发表评论的名声。。。对不起我的英语

maven发布插件只关心检查您的
部分中是否有
快照
-s。扩展此父级的所有模块都将继承
。在构建之前,他们将始终尝试解决这些依赖关系

部分之间的区别在于后者只定义将要使用的版本。这就是说,如果您在那里定义了
快照
-s,那么发布插件根本就不重要,除非此父项目是聚合器或聚合器的一部分,并且此父项目与聚合器一起作为一个整体发布

类似地,maven release插件不负责
。此外,我相信它只处理包含工件版本的Maven属性,只有当这些属性与
相关时

更糟糕的是——据我记忆所及——如果依赖项/插件有
快照
版本,如果它位于
部分,您甚至不会收到警告

出于这个原因,我采用的方法是使用包含工件版本的父POM
。在发布它之前,我使用grep扫描它的快照:

grep SNAPSHOT pom.xml

给定的依赖关系是你的反应器的一部分吗?不,在这种情况下不是。父pom中没有声明任何模块,因为它用于许多不同的项目。我们的想法是集中所有项目共有的东西,如存储库、元数据等。这有什么不同吗?那么,你真正的问题是什么您不能发布自己的项目吗?-你喜欢JIRA提到的插件条快照吗?我可以发布父级快照,它只在
部分有快照。问题是,当我发布一个从它继承的项目时,它将继承这些快照版本,而发布插件没有意识到这一点,导致发布不可靠。我确实在父pom中定义了
中定义的版本,然后在
部分中引用。我希望在一个pom中将我们内部项目的所有版本都定义为快照,并将所有版本排除在我们的各种项目pom之外。但是,这依赖于父pom在DependencyManager中指定发布版本,所以我猜这不起作用。我想我必须将版本信息转移到每个不同的项目中,这真是太遗憾了。我希望避免在发布过程中手动更改版本。这让我吃惊的是,当我发布一个从父项目的
部分继承版本的特定项目时,它不会抱怨快照。似乎如果发布的POM中没有提到这些版本,那么发布插件只是让它们离开,而不是提示删除快照。我很难过
的行为是这样的,但这似乎是出于设计,所以我接受这个答案。谢谢你的反馈!不幸的是,有时,即使是遵循约定的代码也有其局限性和不可预见的用法(在编写时)。您总是可以在JIRA中提交更改请求或错误报告:。是的,在这个场景中,我只发布一个父工件,带有
pom
打包。此时我希望上传的唯一工件是父pom。当涉及到实际发布包含项目的特定代码时,它将从发布的父级继承,因此使用其
部分中定义的版本;如果它们包含快照,则我的版本处于可疑状态,我不能指望它在将来可重用。作为一种解决方法,如果版本的目的只是根据依赖关系管理替换快照并提交给SCM,则您应该尝试仅手动执行该过程(或者最好创建一个批处理过程),不要手动更改每个项目的版本,加油,不要放弃!。尝试类似的方法(在.bat文件中):sed-i的/-SNAPSHOT//g'pom.xml;cvs提交pom.xml。您可以使用GnuWin实现sed功能,或者更好地开始使用linux!
grep SNAPSHOT pom.xml