我有父项目“parent”,它有三个模块,如:
<groupId>com.dummy.bla.bla</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules>
和三个模块相互依赖,如链:
A<--B<--C
当我在父母下运行构建时,我将首先生成A-1.0-SNAPSHOT.jar,然后生成B-1.0-SNAPSHOT.jar,最后生成C-1.0-SNAPSHOT.jar。
然后问题是,我有另一个maven配置文件每天生成每晚构建。在我的父pom.xml中我有:
<build>
<profile>
<id>nightlybuild</id>
<finalName>${artifcateId}-${buildNumber}</finalName>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>
</build>
然后我有问题使用配置文件“nighlybuild”构建所有模块,因为它首先生成A - $ {buildNumber} .jar,然后当它构建B时,它无法查找A-1.0-SNAPSHOT.jar (因为在B / pom.xml下我将A作为版本1.0-SNAPSHOT的依赖项)。无论如何,B下的pom.xml可以有类似的东西:
if(normal build) {
dependency A version is: 1.0-SNAPSHOT
}
if(nightly build) {
dependency A version is: ${buildNumber}
}
答案 0 :(得分:1)
这不是很好的做法。如果您正在更改版本,那么您必须真正发布您的工件,即使用maven-release-plugin(在您每晚构建期间仍然可以执行此操作)。
但是要回答你的问题,没有什么能阻止你将项目B中的依赖声明移动到一个配置文件中,虽然我认为你不能使用插件在依赖版本声明中设置的属性。