Maven war插件将src / main / webapp复制到类中

时间:2013-12-04 04:06:56

标签: eclipse maven war

亲爱的stackoverflow成员,我正面临着Maven war插件的一个奇怪问题。

我把我的eclipse项目目录结构作为:

Project
|-- pom.xml
 -- src
     -- main
        |-- java
         -- resources
         -- webapp
            |-- WEB-INF
                -- web.xml  

当我运行maven build命令时,webapp目录中的所有文件都被复制到classes文件夹中,这对我来说很奇怪。生成war文件中的结果目录结构是:

|-- META-INF
 -- WEB-INF
    -- classes
       -- 
       -- META-INF
       -- WEB-INF

我没想到classes文件夹中的META-INF和WEB-INF文件夹。它复制了类文件夹不需要的数据,这些文件夹已经存在于war文件的根目录中。

请告诉我如何限制maven war builder将META-INF和WEB-INF排除在类文件夹中?

2 个答案:

答案 0 :(得分:2)

我也有这个问题。通过将maven-war-plugin配置添加到我的pom并包含<packagingExcludes>元素来解决它:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
           <packagingExcludes>**/webapp</packagingExcludes>
           ...
        </configuration>
    </plugin>
</plugin>

与OP的情况一样,这排除了将${basedir}/src/main/webapp的内容(包括META-INFWEB-INF)复制到target/classes/main/webapp,然后复制到target/${finalName}/WEB-INF ${basedir}/src/main/webapp

实际上,maven的行为符合要求,只将target/${finalName} 的内容放入${finalName}.war,然后放入{{1}}

答案 1 :(得分:1)

那件事也发生在我身上。您可能将路径/ src / main / webapp

作为资源。
<project>
...
    <build>
    ...
        <resources>
            ...
            <resource>
                <directory>src/main/webapp</directory>
            </resource>
        </resources>
    </build>
</project>

这就是为什么将所有内容包含在结果WEB-INF / classes /中的原因 解决方案是排除以下内容:

        <resource>
            <directory>src/main/webapp</directory>
            <excludes>
                <exclude>**/*</exclude>
            </excludes>
        </resource>

希望获得帮助