1

次のモジュールを含むマルチモジュール プロジェクトがあります。

  • データベース
  • 持続性
  • 仕事
  • 応用

「データベース」プロジェクトは、「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' アセンブリがビルドされたことが示されています。

誰が私が間違っているのか考えていますか?

4

2 に答える 2

0

回答については、http://www.mail-archive.com/users@maven.apache.org/msg117321.htmlを参照してください。

于 2011-03-22T10:08:59.460 に答える
0

コマンド ライン 'mvn -DpreparationGoals=install release:prepare' を使用すると、問題が解決します。そのコマンド ラインを使用すると、 prepare release:prepare ゴールが最初に install ゴールを実行し、リリース アセンブリがローカル リポジトリにインストールされます。これらのアセンブリは、後でリリース プロセス中に参照できます。

于 2011-04-06T06:22:21.080 に答える