我的maven项目包含两个src包和几个依赖项。
我将它打包为战争,并在WEB-INF/libs
中包含了像libs这样的依赖项。
现在我需要在jar中包含来自com.path.to.package.a
的所有已编译项目类,但我还需要排除com.path.to.package.b
中包含的已编译类。
我知道我可以使用<archiveClasses>
选项,如:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
</plugin>
这会将jar项目正确放入libs中,但显然它会保留所有.class文件。
我尝试使用<packagingExcludes>
或<warSourceExcludes>
等一些选项执行排除,但没有运气。
我可以使用与<archiveClasses>
配对的任何选项,以便从我所需要的内容中排除吗?
答案 0 :(得分:0)
由于它接缝还没有像我想要的那样的解决方案,我最终得到了快速而肮脏的一个:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>delete-unused-classes</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete includeemptydirs="true">
<fileset dir="${project.build.outputDirectory}/com/path/to/pachage/a" />
</delete>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
这样做不需要的类在从<archiveClasses>
打包之前被删除,并且它们不会出现在jar lib中。