Maven:从战争中排除资源

时间:2015-05-23 14:26:22

标签: eclipse maven maven-war-plugin

我目前正试图从我建立的战争中排除一些资源。 我已阅读文档和论坛,并发现了很多信息。

遗憾的是,在我的案例中没有任何作用......

我有一个Eclipse Maven项目,如果我是对的,maven-war-plugin是默认的" war builder",所以我必须在我的pom.xml中按顺序覆盖它从构建战争中排除资源。

我尝试了warSourceExcludespackagingExcludeswebResources/excludes

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven.war.version}</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <warSourceExcludes>src/main/webapp/frontEndWorkspace</warSourceExcludes>
        <packagingExcludes>src/main/webapp/frontEndWorkspace
        </packagingExcludes>
        <webResources>
            <resource>
                <!-- this is relative to the pom.xml directory -->
                <directory>src/main/webapp</directory>
                <!-- the list has a default value of ** -->
                <excludes>
                    <exclude>**/frontEndWorkspace</exclude>
                </excludes>
            </resource>
        </webResources>
    </configuration>
</plugin>

尽管有这样的配置,我仍然在我的Tomcat中推送frontEndWorkspace目录...

我想知道它是否来自我在Eclipse环境中使用它的事实?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用的参数是packagingExcludes,它更通用(适用于完整的战争结构)或warSourceExcludes,如果您要排除的文件专门位于参数{定义的文件夹中} {1}}(默认为warSourceDirectory(see here)。当你知道它开始考虑战争的文件夹结构时,它很容易。

示例:

这将排除参数${basedir}/src/main/webapp定义的文件夹*.jsp中包含的WEB-INF完成的所有文件(默认为warSourceDirectory):

${basedir}/src/main/webapp

这将排除战争中包含的所有文件夹<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warSourceExcludes>WEB-INF/**/*.jsp</warSourceExcludes> </configuration> </plugin> 中包含的所有文件(但不包括文件夹结构):

pouet

您的配置<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <packagingExcludes>**/pouet/**/*.*</packagingExcludes> </configuration> </plugin> 的问题是您从错误的源文件夹开始。您只需删除<warSourceExcludes>src/main/webapp/frontEndWorkspace</warSourceExcludes>并在src/main/webapp之后添加/**即可frontEndWorkspace工作(或<warSourceExcludes>/frontEndWorkspace/**</warSourceExcludes>)。

答案 1 :(得分:0)

我在使用Maven 3的Intellij IDEA中发现了同样的问题。
它生成的war文件包含我要排除的目录 的 UPD 解决方法是使用如下语法来消除myFolder目录

details