Maven war插件archiveClasses但不包括包

时间:2016-07-15 11:10:12

标签: java maven jar war maven-war-plugin

我的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>配对的任何选项,以便从我所需要的内容中排除吗?

1 个答案:

答案 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中。