Maven war 插件 archiveClasses 但排除了一个包
Maven war plugin archiveClasses but exclude a package
我的 maven 项目包含两个 src 包和几个依赖项。
我将其打包为 war 并在 WEB-INF/libs
.
中包含了所有依赖项,例如 libs
现在我需要在一个 jar 中包含来自 com.path.to.package.a
的所有已编译项目 classes,但我还需要排除包含在 com.path.to.package.b
中的已编译 classes。
我知道我可以使用 <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>
配对使用,以便从 jar 中排除我需要的东西?
由于还没有像我正在寻找的那样的解决方案,我最终得到了以下一个快速而肮脏的解决方案:
<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 库中。
我的 maven 项目包含两个 src 包和几个依赖项。
我将其打包为 war 并在 WEB-INF/libs
.
现在我需要在一个 jar 中包含来自 com.path.to.package.a
的所有已编译项目 classes,但我还需要排除包含在 com.path.to.package.b
中的已编译 classes。
我知道我可以使用 <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>
配对使用,以便从 jar 中排除我需要的东西?
由于还没有像我正在寻找的那样的解决方案,我最终得到了以下一个快速而肮脏的解决方案:
<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 库中。