java - How to use maven assembly plugin to exclude a package from dependency jar? -
i'm using maven assembly plugin package distribution of project contains lib folder dependency jars, config folder resources , jar file containing project class files. need exclude package 1 of dependency jars in lib folder.
the assembly plugin has option unpack dependency jars, , if used can exclude package assembly.xml so:
<assembly> <formats> <format>tar</format> </formats> <includebasedirectory>false</includebasedirectory> <dependencysets> <dependencyset> <unpack>true</unpack> <useprojectartifact>false</useprojectartifact> <outputdirectory>./${project.build.finalname}/lib</outputdirectory> <scope>runtime</scope> <unpackoptions> <excludes> <exclude>**/excludedpackage/**<exclude> </excludes> </unpackoptions> </dependencyset> </dependencysets> </assembly> my question is, how can exclude package dependency jar without using unpack (i.e. keeping dependencies packed jars)? ideally i'd solution can done using assembly plugin - if that's not possible simplest way achieve want do?
i don't think can repack jar after has been unpacked , filtered. submit enhancement-request @ maven assembly plugin jira.
a (complicated) workaround use maven-dependency-plugin unpack project's dependency want exclude from, use maven-jar-plugin jar classes again excluding package in new jar , declare <files> element maven-assembly-plugin particular dependency.
a sample configuration be
<plugin> <artifactid>maven-dependency-plugin</artifactid> <version>2.10</version> <executions> <execution> <id>unpack</id> <goals> <goal>unpack-dependencies</goal> </goals> <phase>prepare-package</phase> <configuration> <includeartifactids><!-- include here dependency want exclude --></includeartifactids> <outputdirectory>${project.build.directory}/unpack/temp</outputdirectory> </configuration> </execution> </executions> </plugin> <plugin> <artifactid>maven-jar-plugin</artifactid> <version>2.6</version> <executions> <execution> <id>repack</id> <goals> <goal>jar</goal> </goals> <phase>prepare-package</phase> <configuration> <classesdirectory>${project.build.directory}/unpack/temp</classesdirectory> <excludes> <exclude>**/excludedpackage/**</exclude> </excludes> <outputdirectory>${project.build.directory}/unpack</outputdirectory> <finalname>wonderful-library-repackaged</finalname> <!-- give proper name here --> </configuration> </execution> </executions> </plugin> then in assembly configuration, have:
<files> <file> <source>${project.build.directory}/unpack/wonderful-library-repackaged.jar</source> <outputdirectory>/${project.build.finalname}/lib</outputdirectory> </file> </files>
Comments
Post a Comment