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 库中。