来源取自
Eclipse IDE 创建的 Web 应用程序包含一个令人讨厌的文件夹 WebContent,用于托管 Web 资源和部署描述符。对于 Eclipse 用户来说非常自然,此功能忽略了 Maven 约定并迫使开发人员破解 pom 文件以使项目在 Eclipse 中启动和运行。在这方面,Eclipse 在 Maven 支持方面远远落后于其他 IDE,即使您认为 M2Eclipse 插件非常好。所以,对于各位懒惰的圣诞黑客来说,这里是一个基于 maven-war-plugin 的 Eclipse 中 Maven 集成问题的解决方案。
勘误:请使用 WTP 插件而不是更改项目结构。我在写完这篇博客后发现了 wtp 插件,所以我建议你只检查以下说明的第 1 步和第 3 步。我保留了原始博客信息,以防您确实需要或想要更改项目结构。
在 Eclipse 中创建一个 Web 项目:右键单击 Project Explorer
新建 > 项目 > Web \ 动态 Web 项目
在项目根文件夹中创建一个 pom.xml 文件,内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.cejug</groupId>
<artifactId>webapp-test</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>webapp-test Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<webResources>
<resource>
<directory>${basedir}/WebContent</directory>
</resource>
</webResources>
<warSourceDirectory>WebContent</warSourceDirectory>
<warSourceExcludes>WebContent/WEB-INF/lib/*.jar</warSourceExcludes>
<archiveClasses>false</archiveClasses>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix />
</manifest>
<manifestEntries>
<url>${pom.url}</url>
<Implementation-Build>${buildNumber}</Implementation-Build>
<Implementation-Title>${project.name}</Implementation-Title>
<Implementation-Vendor>CEJUG</Implementation-Vendor>
<Implementation-Version>${project.version}</Implementation-Version>
<Built-By>${user.name}</Built-By>
<Built-OS>${os.name}</Built-OS>
<Build-Date>${timestamp}</Build-Date>
<SCM>${buildNumber}</SCM>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
为eclipse编译和准备项目:
mvn -Dwtpversion=2.0 compile eclipse:eclipse
注意插件 -Dwtpversion 的使用使 Maven 能够将 Eclipse WTP 支持添加到项目中。那个简单的标志就可以了:)。实际上,仅使用该标志即可,但并非所有 Eclipse 插件都可以在没有 WebContent 文件夹的情况下开箱即用 - 由您决定是否值得修改项目结构或直接使用普通 Maven文件夹。
完成,现在您可以在 Eclipse 中刷新项目并继续工作。请记住,在 Eclipse 中只是对资源文件夹进行了硬编码,而 src/main/java 将继续按照 Maven 的预期进行。也许有一天我们可以将 Maven 和 Eclipse 的约定融合在一起,然后我们最终将摆脱这种日常的黑客攻击。