![](/img/trans.png)
[英]Converting Eclipse Maven Project into Eclipse Maven Dynamic Web Project
[英]Eclipse + Maven + Dynamic Web Project -> Maven overwrites Deployment Assembly
摘要
在Eclipse中,當我“Maven->更新項目配置”“Maven Dependencies”從我的項目的“部署程序集”中刪除時。
細節
我從一個預配置的Eclipse項目開始:File-> New-> Dynamic Web Project-> JavaServer Face v2.0 Project。 為了刪除“魔術”,我將其轉換為Maven項目:Configure-> Convert to Maven project。
pom.xml包含以下內容:
<build>
<finalName>jsf-facelets-tutorial</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
然后,為了確保在部署之前將Maven依賴項復制到“WEB-INF / lib /”,我將它們添加到項目的“部署程序集”:項目屬性 - >部署程序集。 有關更多詳細信息,請參閱此問題: Eclipse + Maven + JavaServer Faces - > ClassNotFoundException:StartupServletContextListener 。
我知道有兩個相關的問題。
問題
(1)當我“Project-> Maven->更新項目配置”時,“Maven Dependencies”將從我的“部署程序集”中刪除。 有沒有辦法阻止這種情況發生,可能是通過一些Maven插件?
(2)當我從Eclipse中構建.war時,一切都很好,.war在Tomcat中運行正常。 但是當我從Maven的命令行構建它時, mvn clean compile war:war
,來自“WebContent /”的.html文件沒有添加到.war中。 同樣,我需要哪些Maven設置/插件來解決這個問題?
僅供參考,這是一個非常基本的應用程序......只是一個登錄頁面和一個歡迎頁面。
如果我應該提供任何其他詳細信息(web.xml,faces-config-xml,login.xhtml),請告訴我,我會添加它們。
謝謝
- 編輯 -
Eclipse版本:3.6.2
Eclipse m2e版本:1.0.1
Apache Maven版本:2.2.1
(1)解決方案
已更新至Eclipse Java EE 3.7.2(Indigo)。 現在還使用m2e-wtp Maven Integration for Eclipse WTP插件
(2)解決方案
從原型創建新的Maven項目,然后是Eclipse-> Import-> Existing Maven Project。 使用新的Eclipse版本和m2e-wtp,Eclipse中的Java EE透視圖可以很好地與標准的Maven目錄結構配合使用
pom.xml現在也更簡單了:
<build>
<finalName>jsf-facelets-tutorial</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
我會建議遷移到Eclipse的3.7.x(藍色),這對於M2E更好的支持,並且還允許你使用Maven集成WTP(單獨安裝),這應使事情更容易。 我猜大多數問題應該通過更新到Indigo來解決。
安裝鏈接: http : //marketplace.eclipse.org/node/96737
另見: Eclipse Indigo / 3.7中的Maven / Tomcat項目
編輯將您的Web資源放在WebContent下,然后將其添加為WAR插件中的目錄可能是一種解決方案。 干凈的方法是將它們放在src/main/resources
或src/main/webapp
,它們應該自動包含在WAR文件中。 WebContent
不是Maven的標准目錄之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.