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

问题描述 投票:3回答:2

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

eclipse maven war
2个回答
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

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


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>

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.