0

アセンブリを使用して(パッケージ化フェーズでmaven-assembly-pluginを介して)各モジュールを特定の方法でパッケージ化するマルチモジュールmaven2プロジェクトがあります。次に、別のモジュールを使用して、これらのアセンブリを配布可能な「インストーラー」パッケージに結合しようとしています。インストーラーモジュールの場合、他のプロジェクトのデフォルトのjarを確認できますが、追加のアセンブリにアクセスできるようになることはありません。ドキュメントから、これは可能であるはずなので、私は何か間違ったことをしているのか、それともMavenのバグだと思いますか?私はこれで数日間立ち往生しているので、助けていただければ幸いです!

コメントに続いて、これを実証するためにgithubでテストプロジェクトを作成しました。proj1モジュールは2つのjarファイルを作成します。「パッケージ」モジュールで生成されたアセンブリには両方が含まれていると思いますが、メインのプロジェクトjarだけが含まれているわけではありません。

https://github.com/unluckypixie/maven-packaging-test

注:この例では、proj1のjarの内容が同じであることはわかっていますが、実際の状況ではなく、proj1ファイルの内容が問題に関連しているとは思いません。

実行する場合:

mvn clean package

そして、ls proj1/target/*.jarあなたは見るべきですか:

proj1/target/proj1-1.0-SNAPSHOT.jar
proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar

パッケージjarを見ると:

jar -tvf package/target/package-1.0-SNAPSHOT-package-assembly.jar

次のようなものが表示されます。

     0 Mon Jul 30 16:27:00 BST 2012 META-INF/
   106 Mon Jul 30 16:26:58 BST 2012 META-INF/MANIFEST.MF
     0 Mon Jul 30 16:21:46 BST 2012 package/
  2358 Mon Jul 30 16:21:44 BST 2012 package/proj1-1.0-SNAPSHOT.jar
  2363 Mon Jul 30 16:21:46 BST 2012 package/package-1.0-SNAPSHOT.jar

proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jarなぜそこにもないのか知りたいです。

パッケージアセンブリは次のようになります。

<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>package-assembly</id>

    <formats>
        <format>jar</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <moduleSets>
        <moduleSet>
            <useAllReactorProjects>true</useAllReactorProjects>

            <includes>
                <include>org.test.parent:*</include>
            </includes>

            <binaries>
                <outputDirectory>/package/</outputDirectory>
                <unpack>false</unpack>
            </binaries>
        </moduleSet>
    </moduleSets>
</assembly>
4

2 に答える 2

0

私はあなたの投稿に基づいてサンプルプロジェクトを作成しました(それにいくつかの修正を加えました)そして私が行う場合

mvn clean package

package / target/package-1.0.0-SNAPSHOT-package-assembly.zipの下にあります。

package/
package/proje1-1.0.0-SNAPSHOT.jar
package/package-1.0.0-SNAPSHOT.jar

それは私には大丈夫に見えます。問題は、何を期待したかということです。

于 2012-07-30T14:04:57.580 に答える
0

アセンブリファイルでattachmentClassifierを使用して、これを機能させることができました。例:

    <moduleSet>
        <useAllReactorProjects>true</useAllReactorProjects>

        <includes>
            <include>org.me:*</include>
        </includes>

        <binaries>
            <outputDirectory>/output/dir</outputDirectory>
            <unpack>false</unpack>
            <includeDependencies>false</includeDependencies>
            <attachmentClassifier>my-assembly</attachmentClassifier>
        </binaries>
    </moduleSet>

あなたの助けをくれたkhmarbaiseのおかげで、私はあなたの解決策を使用しなかったかもしれませんが、それは私がそこに着くのを助けました!

于 2012-08-01T14:36:37.950 に答える