我已经开始学习Maven,并提出以下问题:
我想动态指定构建maven项目的依赖项,而不是使用POM中指定的依赖项 - 有没有办法做到这一点?
所以虽然我在POM中指定了以下依赖项
...
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>ProjectComponent</artifactId>
<version>1.0</version>
</dependency>
...
我想在build命令中指定我想使用不同的版本。 有没有办法指定这个?
我的想法是,我希望在Jenkins中进行集成构建,并依赖于特定分支的系统的最新可用快照。该快照尚未发布到maven存储库,因此我想在Jenkins中获取它并为mvn build指定依赖项。
谢谢!
可能的解决方案:我最终得到的是使用$ {my.lib.version}构造并在调用mvn时使用-Dmy.lib.version = 1.0-SNAPSHOT指定它。因此,我可以通过从svn获取任意快照版本的依赖项并将其快照版本提供给集成构建pom,将其用于Jenkins集成构建。
答案 0 :(得分:3)
Maven可以在配置文件的帮助下使用“动态”指定的属性(例如: group.ProjectComponent.version )。
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>ProjectComponent</artifactId>
<version>${group.ProjectComponent.version}</version>
</dependency>
因此,如果您创建一些配置文件,您可以在它们之间切换(请参阅maven参考)
示例:
<profile>
<id>stable-builds</id>
<properties>
<group.ProjectComponent.version>1.0</group.ProjectComponent.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>beta-builds</id>
<properties>
<group.ProjectComponent.version>2.0.Beta1</group.ProjectComponent.version>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
答案 1 :(得分:0)
不,您无法动态更改依赖项。此外它没有意义,因为你希望有一个可重复的构建。
答案 2 :(得分:0)
我最终得到的是使用$ {my.lib.version}构造并在调用mvn时使用-Dmy.lib.version = 1.0-SNAPSHOT指定它。因此我可以将它用于Jenkins集成构建从svn获取任意快照版本的依赖项并将其快照版本提供给集成构建pom。
答案 3 :(得分:0)
我正在寻找类似的东西。在我的情况下,相同的应用程序代码正在不同的堆栈上重用,这意味着使用不同的“驱动程序”来访问数据。虽然驱动程序实现相同的接口,但它们确实来自不同的工件。