Maven war 插件存档类但排除一个包



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

相关内容

  • 没有找到相关文章

最新更新