これは良い解決策であるかどうかは、わかりませんが、それ以外の答えはありませんでしたので、私はこの思い付いた:アセンブリは別の子モジュール
に構築
1.移動重要:これが必要かどうかは分かりませんが、アセンブリがルートプロジェクトで構成されている場合は、それが動作するかどうかを確認する時間がありません。それ以外の場合は、手順2で別の分類子を使用してmy-project
〜my-project
に依存関係を定義する必要があります。これは機能しません。私が間違っているなら、この回答を編集してください。
+ my-project
+-- my-child-project-1
+-- my-child-project-2
+-- my-project-build
2.ビルドプロジェクトに分類器site
を持つすべてのモジュールの依存関係を定義
<!-- Yes, also for the parent project. However, not for the build project itself -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my-project</artifactId>
<version>${project.version}</version>
<classifier>site</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my-project</artifactId>
<version>${project.version}</version>
<classifier>site</version>
</dependency>
...
3.アセンブリ・ディスクリプタでdependencySets
を定義します。サブモジュールのサイトコンテンツを、メインモジュールのサイトディレクトリのそれぞれのサブディレクトリに移動することによって、壊れたリンクを修正します。
アイデアは、site
- クラシファイアの依存関係によって生成されたサイトジャーのアーティファクトを使用し、それらを解凍することです。モジュールリンクは相対的なものなので、artifactIdsで指定されたサブディレクトリにコンテンツを展開すると、それらのリンクが修正されます。
<dependencySets>
<dependencySet>
<outputDirectory>site</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
<includes>
<include>*:my-project:jar:site</include>
</includes>
</dependencySet>
<!-- sites of sub modules -->
<dependencySet>
<includes>
<include>*:my-child-project-1:jar:site</include>
<include>*:my-child-project-2:jar:site</include>
<include>*:my-project-build:jar:site</include>
</includes>
<outputDirectory>site/${artifact.artifactId}</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
</dependencySet>
<!-- sites of sub-sub modules (if required) -->
<dependencySet>
<includes>
...
</includes>
<outputDirectory>site/${artifact.parent.artifactId}/${artifact.artifactId}</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
</dependencySet>
...
</dependencySets>
4.ルートプロジェクトでsite:jar
目標を定義
この目標はpackage
相で実行デフォルトであり、発生中の依存関係として定義されている「サイト」-attachments(例えばmy-parent-1.0.0-site.jar
)、ステップ2で開梱され、ステップ3で開梱された:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.4</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
5。mvn package
を実行してアセンブリを生成します
結果として、作業リンクを含む完全なサイトを含むアセンブリのサブディレクトリ "site"が作成されます。