在maven配置文件中使用内部版本号插件来构建模块

时间:2012-05-11 15:08:33

标签: maven dependencies maven-profiles

我有父项目“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}
}

1 个答案:

答案 0 :(得分:1)

这不是很好的做法。如果您正在更改版本,那么您必须真正发布您的工件,即使用maven-release-plugin(在您每晚构建期间仍然可以执行此操作)。

但是要回答你的问题,没有什么能阻止你将项目B中的依赖声明移动到一个配置文件中,虽然我认为你不能使用插件在依赖版本声明中设置的属性。