java - How to include rmic package jar in maven assembly -
i have multi-module maven project must have rmi stubs generated (to integrate legacy product can't use dynamic proxies). have configured rmic-maven-plugin rmic during compile phase, , package stubs jar during package phase.
<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>
i run issue after assembly created in '-dist' module, child module of parent exists create distribution archive. not include client jar generated rmic-package execution.
how configured assembly plugin include jar rmic plugin produces in package phase? tried adding <files.
section after <modulesets>
, when files section present, only files end in assembly, though moduleset section didn't exist.
<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>
note: have read related question creating stub project seems impossible, since rmi server class stub generated needs part of main application jar, not part of stub jar, don't see how rmic rmi server in 1 module , yet javac in another.
i able solve problem myself switching using modulesets combination of filesets , dependencysets. filesets pick main jar root of assembly, , rmic client jar rmic-package goal lib directory. then, dependencyset pulls dependencies of main jar lib directory well.
<!-- include -dl jar created rmic-package goal in lib part of assembly. necessary because target vm not support dynamic rmi stubs, stubs must deployed in assembly. --> <filesets> <fileset> <directory>../{project}/target</directory> <outputdirectory>.</outputdirectory> <!-- put main jar in top level --> <includes> <include>*.jar</include> </includes> <!-- don't include rmic-built -dl jar @ top --> <excludes> <exclude>*-dl-*.jar</exclude> </excludes> </fileset> <fileset> <directory>../{project}/target</directory> <outputdirectory>lib</outputdirectory> <!-- put rmic-built -dl jar in lib dir --> <includes> <include>*-dl-*.jar</include> </includes> </fileset> </filesets> <dependencysets> <dependencyset> <!-- put dependencies in lib, usual --> <useprojectartifact>false</useprojectartifact> <outputdirectory>lib</outputdirectory> <excludes> <!-- don't include main jar, @ top level already. --> <exclude>{groupid}:{artifact}</exclude> </excludes> <unpack>false</unpack> </dependencyset> </dependencysets>
Comments
Post a Comment