0

我有父项目“父”,它有三个模块,如:

 <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

当我在 parent 下运行构建时,我将首先生成 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}
}
4

1 回答 1

1

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

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

于 2012-05-11T15:17:34.843 回答