0

親プロジェクト「parent」があり、次のような 3 つのモジュールがあります。

 <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>

3 つのモジュールがチェーンのように相互に依存しています。

A<--B<--C

親の下でビルドを実行すると、最初に A-1.0-SNAPSHOT.jar が生成され、次に B-1.0-SNAPSHOT.jar、最後に C-1.0-SNAPSHOT.jar が生成されます。

次に、問題は、毎日ナイトリー ビルドを生成する別の Maven プロファイルがあることです。

<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 バージョン 1.0-SNAPSHOT との依存関係として A があります)。とにかく、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 に答える