マルチモジュールのMavenプロジェクトがあり、RMIスタブを生成する必要があります(動的プロキシを使用できないレガシー製品と統合するため)。コンパイルフェーズでrmicを実行し、パッケージフェーズでスタブjarをパッケージ化するようにrmic-maven-pluginを構成しました。
<execution>
<id>rmic-process-classes</id>
<goals>
<goal>rmic</goal>
</goals>
<phase>compile</phase>
<configuration>
<keep>true</keep>
<!--outputDirectory>${project.build.outputDirectory}</outputDirectory-->
<includes>
<include>com.MyImpl</include>
</includes>
</configuration>
</execution>
<execution>
<id>rmic-package</id>
<goals>
<goal>package</goal>
</goals>
<configuration>
<!--outputDirectory>${project.build.outputDirectory}</outputDirectory>
<finalName>broker-dl</finalName>
<classifier>${project.version}</classifier-->
</configuration>
</execution>
配布アーカイブを作成するために存在する親の子モジュールである'-dist'モジュールでアセンブリが作成された後、問題が発生します。rmic-packageの実行によって生成されたクライアントjarは含まれません。
rmicプラグインがパッケージフェーズで生成するjarを含めるようにアセンブリプラグインを構成するにはどうすればよいですか?<files.
の後にセクションを追加しようとしました<moduleSets>
が、filesセクションが存在する場合、moduleSetセクションが存在しないかのように、それらのファイルのみがアセンブリに残ります。
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>com:ImplModule</include>
</includes>
<binaries>
<unpack>false</unpack>
<fileMode>644</fileMode>
<directoryMode>755</directoryMode>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
<files>
<file>
<outputDirectory>lib</outputDirectory>
<source>../ImplModule/target/ImplModule-${project.version}-client.jar</source>
<fileMode>644</fileMode>
</file>
</files>
注:関連する質問を読みましたが、スタブが生成されるRMIサーバークラスは明らかにスタブjarの一部ではなく、メインアプリケーションjarの一部である必要があるため、スタブプロジェクトを作成することは不可能のようです。あるモジュールでRMIサーバーをrmicし、別のモジュールでjavacする方法を確認してください。