Java 我如何告诉maven更喜欢快照版本而不是增量版本?
因为我的增量版本号=CI版本号,所以我不想将增量版本号放入我的开发POM中。它应该只有主版本和次版本组件Java 我如何告诉maven更喜欢快照版本而不是增量版本?,java,maven,versioning,dependency-management,Java,Maven,Versioning,Dependency Management,因为我的增量版本号=CI版本号,所以我不想将增量版本号放入我的开发POM中。它应该只有主版本和次版本组件 POM中的版本=例如1.1-SNAPSHOT 版本=例如1.1.23 但是,同一框架中的另一个组件会说“如果快照版本在本地存在,请使用该版本,否则请使用最新的增量版本” 如何在POM中指定此项 我试过这个: <dependencies> <dependency> <groupId>com.example.ajb.versionp
- POM中的版本=例如1.1-SNAPSHOT
- 版本=例如1.1.23
<dependencies>
<dependency>
<groupId>com.example.ajb.versionpoc</groupId>
<artifactId>downstream</artifactId>
<version>[1.1-SNAPSHOT],[1.1,2.0)</version>
</dependency>
</dependencies>
com.example.ajb.versionpoc
下游的
[1.1-快照],[1.1,2.0)
但它不起作用。它仍然解析版本,例如1.1.23。我如何告诉Maven更喜欢快照版本?我不太明白您想做什么,但一般情况如下:
根据@DB5关于配置文件的建议,我认为您可以声明一个特定的配置文件,其中包括快照依赖项。可以根据本地存储库中该库的存在来激活此类配置文件 在pom的
profiles
部分添加此片段:
<profile>
<!--This profile will prefer the SNAPSHOT version if it exists locally-->
<id>local</id>
<activation>
<file>
<exists>${user.home}/.m2/repository/mygroup/myartifact/myversion-SNAPSHOT/myartifact-myversion-SNAPSHOT.jar</exists>
</file>
</activation>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>myversion-SNAPSHOT</version>
</dependency>
</dependencies>
</profile>
<profile>
<!--This profile will prefer the released version if the SNAPSHOT does not exist locally-->
<id>released</id>
<activation>
<file>
<missing>${user.home}/.m2/repository/mygroup/myartifact/myversion-SNAPSHOT/myartifact-myversion-SNAPSHOT.jar</missing>
</file>
</activation>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>myversion</version>
</dependency>
</dependencies>
</profile>
地方的
${user.home}/.m2/repository/mygroup/myartifact/myversion SNAPSHOT/myartifact-myversion-SNAPSHOT.jar
mygroup
我的神器
myversion快照
释放
${user.home}/.m2/repository/mygroup/myartifact/myversion SNAPSHOT/myartifact-myversion-SNAPSHOT.jar
mygroup
我的神器
我的版本
我认为实现这一点的最佳方法是通过@DB5。我熟悉Maven配置文件,但我认为没有一种方法可以根据特定依赖关系的存在与否触发配置文件?4.嗨,Michael,(1)是的,我只在开发中使用快照。但是如果我不将它们放在一个范围内,我如何解决我的问题?(2)一个范围表达式可以包含两个或一个参数,也可以包含多个范围,请参见(3)不确定这意味着什么。我不想设置“范围”对于快照版本,我只是尝试使用范围语法来实现我的目标。Hi@Tunaki,这取决于更新版本的频率。在我的情况下,版本必须每天在POM中手动更新多次,因为我们处于连续交付模式中。我理解您正在尝试做什么,但这是一个解决方案有点古怪…(1)如果用户指定了不同的存储库位置(由于下游团队发布了同一版本的多个变体,我自己也这样做过),(2)如果代码是从IDE中的源代码构建的,而实际上不存在于存储库中,该怎么办(实际上这是一个非常正常的用例),(3)不确定这是否以独立于平台的方式工作(Windows/UNIX路径约定)我的答案是:1)您可以在配置文件中指定存储库。2)在这种情况下,您可以在适当的依赖项中指定scope=system路径。3)为什么不呢?存在
和缺少
路径是用Unix表示法指定的,但我自己在Windows中对它们进行了测试,结果正常。去试试吧。(也许我应该回答说你的问题本身有点古怪,但是,呃…:-)