3

マルチモジュールプロジェクトを作成し、Mavenのアセンブリプラグインを使用してプロジェクトのアーティファクトを圧縮しました。

Proj
 +Module A
   pom.xml
 +Module B
   pom.xml
pom.xml

メインモジュールを作成すると、次のものが生成されます

Proj
 +Module A
   target\A.jar
   target\A-source.jar
   target\A-javadoc.jar
 +Module B
   target\B.jar
   target\B-source.jar
   target\B-javadoc.jar

1)ModuleB pomファイルの下にアセンブリプラグインを追加し、アセンブリ記述子ファイルでModuleSetを使用しています

<moduleSets>
    <moduleSet>
       <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>groupA:A:jar</include>
        <include>groupA:A:javadoc</include>
        <include>groupA:A:source</include>  
      </includes>
      <binaries>
        <outputDirectory>moduleA</outputDirectory>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>

    <moduleSet>
    <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>groupB:B:jar</include>
        <include>groupB:B:javadoc</include>
        <include>groupB:B:source</include>
      </includes>
      <binaries>
        <outputDirectory>moduleB</outputDirectory>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
  </moduleSets>

しかし、zipファイルで取得しているのはA.jarとB.Jarだけです。javadocとソースをzipファイルで取得していません。m2リポジトリからダウンロードしているのでしょうか。ソースとJavadocがmavenリポジトリのアーティファクトに存在しないため、ダウンロードしているのではないかと疑っています。3つすべてのアーティファクトをzipファイルに追加するにはどうすればよいですか?

2)ModuleBのpomではなく親pomにアセンブリプラグインを追加したいのですが、追加すると、「アセンブリが生成される前にパッケージフェーズが実行されていることを確認してください」という例外が発生します。グーグルした後、モジュールとしてアセンブリを追加するための提案はほとんど見つかりませんでした。これを処理する他の方法はありますか?

4

1 に答える 1

4

この問題を解決するためにdependecySetを使用しました。ワイルドカードを使用してすべてのバイナリを追加できます。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>bin</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <formats>
    <format>zip</format>
  </formats>
 <dependencySets>
        <dependencySet>
            <includes>
                <include>groupA:*:*:*</include>
            </includes>
            </dependencySet>
         </dependencySets>
</assembly>

これにより、プロジェクトのすべてのバイナリ アーティファクトが追加されます。注意すべきもう 1 つのことは、アセンブリ記述子で使用される id です。バイナリアーティファクトのビンである必要があります。誰かが同様の問題に遭遇した場合に備えて、ここに投稿すると、これが役立つ場合があります。

于 2012-05-22T18:09:06.763 に答える