使用最新的依赖快照?

时间:2014-02-06 02:51:18

标签: maven maven-2 maven-3

更新:简化我的问题 - 我有一个模块mod1,它在模块mod2中用作依赖项。我想确保mod2始终使用mod1的最新版本快照。我怎样才能在Maven中实现这一目标?

=====

我有两个模块,其中一个模块用作另一个模块的依赖项。如何确保mod1的最新快照始终在mod2中使用?这两个模块在父pom中提到如下 -

<modules>
   <module>mod1</module>
   <module>mod2</module>
</modules> 

我在远程maven repo(版本1.0)上有mod1的发行版。现在,在我的构建中,当mod1中存在代码通道时,它构建为1.1-SNAPSHOT(未部署在远程repo上)。如何确保mod2使用此(最新)快照版本?如果更改了mod1源,则需要在mod2中使用新版本1.1-SNAPSHOT,如果mod1没有源更改,则需要在mod2中使用现有的最新版本1.1。有谁能建议如何在这里始终使用最新的快照/发布?我试着在pom.xml中关注mod2 -

<dependency>
   <groupId>com.test</groupId>
   <artifactId>mod2</artifactId>
   <version>LATEST</version>
</dependency>

但是,它始终解析为1.0版本,并且永远不会解析为1.1-SNAPSHOT,它位于本地仓库中。如何确保使用最新的快照?将不胜感激任何建议。

3 个答案:

答案 0 :(得分:2)

版本-SNAPSHOT已包含&#34;最新&#34;的概念。

所以我们的发布周期需要如下所示:

在你开始之前,你有: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的发布版本的情况。

答案 1 :(得分:1)

我确实找到了解决方案。在依赖项下,添加以下工作 -

<version>[1.0-SNAPSHOT,)</version>

如果没有快照,它会选择最新版本,这就是我需要的。

答案 2 :(得分:0)

通常,同一项目中的模块使用相同的版本,而根本不指定模块中的版本。在这种情况下,Maven将回归父母的版本。

通过该设置,mod2/pom.xml可以具有以下内容:

    <dependency>
        <groupId>com.test</groupId>
        <artifactId>mod1</artifactId>
        <version>${project.version}</version>
    </dependency>

在这种情况下,您根本不需要将mod1安装到本地存储库。

只需从顶级目录运行mvn命令,mod2即可轻松解决mod1问题。 Eclipse和Idea也将正确处理此设置。

如果您有需要安装mod1的特定用例,或者您需要两个模块具有单独的版本号,请解释一下,因为它可能有助于您更好地回答这个问题。< / p>

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