使用依赖关系的最新快照



更新:简化我的问题 - 我有一个模块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的特定用例,或者您需要两个模块才能具有单独的版本号,请解释一下,因为它可能有助于更好地回答您的问题。

最后,您可能会发现版本插件有用。它可以管理您的项目,插件和依赖版本,并根据需要升级它们。