我有一个多模块 maven 项目,它必须生成 RMI 存根(与不能使用动态代理的遗留产品集成)。我已将 rmic-maven-plugin 配置为在编译阶段执行 rmic,并在打包阶段打包存根 jar。
<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。