Source taken from
Web應用程序包含一個惱人的WebContent文件夾來承載網絡資源和部署描述符。對於Eclipse用戶來說這是非常自然的,這個特性忽略了Maven約定,並且強迫開發人員破解pom文件以便在Eclipse中啓動並運行項目。在這方面,即使你考慮非常好的M2Eclipse插件,Eclipse如果遠遠落後於其他IDE的Maven支持。因此,對於懶惰的聖誕節黑客來說,這裏是基於maven-war-plugin的Eclipse中Maven集成問題的解決方案。
ERRATA:請使用WTP插件而不是更改項目結構。在寫這篇博客之後,我想出了wtp插件,所以我建議你只檢查下面指令的第一步和第三步。如果您確實需要或想要更改項目結構,我會保留原始的博客信息。
在Eclipse中創建一個Web項目:在Project Explorer
新建>右鍵單擊項目>網絡\動態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中刷新項目並繼續工作。請記住,jjust資源文件夾在Eclipse中是硬編碼的,src/main/java會像Maven期望的那樣繼續。也許有一天我們可以在Maven和Eclipse的約定之間達成一致,然後我們終於可以擺脫這種日常黑客行爲了。