亲爱的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排除在类文件夹中?
答案 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-INF
和WEB-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>
希望获得帮助