次のモジュールを含むマルチモジュール プロジェクトがあります。
- データベース
- 持続性
- 仕事
- 応用
「データベース」プロジェクトは、「maven-assembly-plugin」を使用して追加のアセンブリを作成する jar プロジェクトです。この追加のアセンブリには、データベース スキーマが含まれています。
プラグインの構成は次のとおりです。
<plugin>
<!-- create a zip file that contains all the db migration scripts. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-schema</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>db-schema-descriptor.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
「アプリケーション」プロジェクトは、アプリケーション ディレクトリ構造の圧縮バージョンを作成します。したがって、スキーマ アセンブリを参照して、それを抽出し、アプリケーション ディレクトリ構造内の適切な場所にコピーします。参照は、通常の maven 依存関係として表されます。
<dependency>
<groupId>my.application</groupId>
<artifactId>persistence</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>db-schema</classifier>
</dependency>
少なくとも、1 つのステップでアプリケーションをビルドするために 4 つのサブモジュールを集約するマルチ モジュール プロジェクトがあります。
集約プロジェクトで「mvn deploy」を実行すると、正常に機能します。データベース スキーマ アセンブリが抽出され、コピーされます。しかし、集約プロジェクトのビルドで「mvn release:prepare」を実行すると、「アプリケーション」プロジェクトが失敗し、maven がバージョン「0.0.1」のスキーマ アセンブリを見つけられないというエラー通知が表示されます。ログ ファイルには、'Persistence' プロジェクトが 'Application' プロジェクトの前にビルドされ、'database schema' アセンブリがビルドされたことが示されています。
誰が私が間違っているのか考えていますか?