我的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 项目正确地放在库中,但显然它会保留所有.class文件。
我尝试使用一些选项(例如 <packagingExcludes>
或 <warSourceExcludes>
)执行排除,但没有运气。
是否有任何选项可以与<archiveClasses>
配对使用,以便从罐子中排除我需要的东西?
由于它接缝还没有像我正在寻找的解决方案,所以我最终得到了以下快速而肮脏的解决方案:
<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 库中。