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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven war插件将src / main / webapp复制到类中相关的知识,希望对你有一定的参考价值。

亲爱的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排除在类文件夹中?

答案

我也有这个问题。它是通过将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

实际上,maven然后按照需要行事,将${basedir}/src/main/webapp的内容仅放入target/${finalName},然后放入${finalName}.war

另一答案

那也发生在我身上。您可能将路径/ 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>

希望这有帮助

以上是关于Maven war插件将src / main / webapp复制到类中的主要内容,如果未能解决你的问题,请参考以下文章

请问maven工程jar包,war包,pom打包,都是怎么定的?

???war???????????????src/main/java??????xml??????????????????

如何将maven插件将本地jar打包进war中

scala maven插件没有将scala文件打包成jar

利用assembly插件分环境打包配置文件

maven 的常用命令