我将其作为答案,尽管目前这还不是很有效的答案。
当我completionGoals
在 Maven 发布插件中添加配置选项时,我的目标是启用开发使用版本范围的工作流程,但该版本将仅固定到具体版本。
添加到版本 Maven 插件的启用目标之一就是versions:resolve-ranges
目标。缺少的是一种在之后再次解开这些范围的方法。
在我们再次需要它之前,我们真的没有任何安全的地方来存储发布插件不会反对或清理的原始范围。
我想到的最接近的解决方案是在包含版本范围的版本旁边注入XML PIpom.xml
......在这种情况下,将被转换为,例如
<project>
...
<dependencies>
...
<dependency>
<groupId>com.foo.bar</groupId>
<artifactId>manchu</artifactId>
<version>[1.2.3,2.0)</version>
</dependency?
...
</dependencies>
...
</project>
至
<project>
...
<dependencies>
...
<dependency>
<groupId>com.foo.bar</groupId>
<artifactId>manchu</artifactId>
<version>1.5.7</version>
<?versions-maven-plugin allowed-version-range="[1.2.3,2.0)"?>
</dependency?
...
</dependencies>
...
</project>
通过确保preparationGoals
包含versions:resolve-ranges
目标...(注意:版本插件可能必须派生第三个 Maven 来解决缺乏pom.xml
重新加载的问题,以便clean verify
有意义,但resolve-ranges
应该在构建的确切版本中解决正在使用,所以它不应该是一个问题)。
然后,completionGoals
您有(尚未实现的)versions-maven-plugin 目标,该目标删除 XML PI 并将范围放回原处。
目前有许多问题阻止了这一点:
但是,您也许可以一起拼凑一些东西。
设置completionGoals
为类似versions:use-next-snapshots versions:commit
像这样运行你的版本mvn versions:use-releases versions:commit scm:commit release:prepare release:perform install
那么应该发生什么:
我们将-SNAPSHOT
s 切换到发布
我们将更改提交给 SCM
我们开始发布准备
当pom.xml
转换为下一个开发版本时,我们还推进了依赖项(利用我们所有的依赖项都有完全相同的命令(install
末尾带有)的事实,因此它们的下一个-SNAPSHOT
已经在本地存储库中,因此它们将得到高级自动为我们(理论上)),我们依靠release:prepare
为我们提交更改。
释放正常执行
我们将下一个开发安装-SNAPSHOT
到本地 repo 中,以便所有下游项目在运行时都会更新其版本versions:use-next-snapshots
以上内容容易出错......如果我可以为您提供基于版本范围的解决方案,我会更喜欢,但是,现在这是我能看到的最好的解决方案。