更新:简化我的问题 - 我有一个模块mod1,该模块用作模块mod2中的依赖项。我想确保Mod2始终使用MOD1的最新版本快照。我该如何实现这一目标?
================
i有两个模块,其中一个模块用作另一个模块中的依赖项。如何确保MOD1的最新快照总是在MOD2中使用?父pom中提到两个模块如下 -
<modules>
<module>mod1</module>
<module>mod2</module>
</modules>
我在远程Maven Repo(版本1.0)上具有MOD1的发行版。现在,在我的构建中,当MOD1中有一个代码时,它将被构建为1.1-Snapshot(未在远程存储库上部署)。如何确保Mod2使用此(最新)快照版本?如果更改了MOD1源,则需要在MOD2中使用新版本1.1-snapshot,如果MOD1没有源更改,则需要在MOD2中使用现有的1.1的最新版本。谁能建议如何在此处始终使用最新的快照/发布?我尝试在mod2-
的pom.xml中关注<dependency>
<groupId>com.test</groupId>
<artifactId>mod2</artifactId>
<version>LATEST</version>
</dependency>
然而,这总是可以解决发行版1.0版,并且切勿在本地存储库中解析为1.1-snapshot。如何确保使用最新的快照?将感谢任何建议。
版本-SNAPSHOT
已经包括"最新"的概念。
所以我们的释放周期需要看起来像:
启动之前,您有:mod1版本为 1.0-SNAPSHOT
,mod2版本是 1.1-SNAPSHOT
,它取决于 mod1:1.0-SNAPSHOT
现在您要发布。为此,您可以在各处删除-SNAPSHOT
,构建&amp;部署。
部署后,您会碰到版本:
MOD1版本现在是1.1-SNAPSHOT
,MOD2版本是1.2-SNAPSHOT
,它取决于mod1:1.1-SNAPSHOT
您永远不会有Mod2的快照版本取决于版本 mod1的版本。
我确实找到了解决方案。在依赖性之下,添加以下工作 -
<version>[1.0-SNAPSHOT,)</version>
如果不存在快照,它将拾取最新版本,这是我需要的。
通常,同一项目中的模块完全不用在模块中指定版本。在这种情况下
使用该设置,mod2/pom.xml
可以具有这样的东西:
<dependency>
<groupId>com.test</groupId>
<artifactId>mod1</artifactId>
<version>${project.version}</version>
</dependency>
在这种情况下,您根本不需要将mod1
安装到本地存储库中。
只需从顶级目录运行您的mvn
命令,mod2
将能够毫无问题地解决mod1
。日食和想法也将正确处理此设置。
如果您有一个需要安装mod1
的特定用例,或者您需要两个模块才能具有单独的版本号,请解释一下,因为它可能有助于更好地回答您的问题。
最后,您可能会发现版本插件有用。它可以管理您的项目,插件和依赖版本,并根据需要升级它们。