簡體   English   中英

Eclipse + Maven +動態Web項目 - > Maven覆蓋部署程序集

[英]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/resourcessrc/main/webapp ,它們應該自動包含在WAR文件中。 WebContent不是Maven的標准目錄之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM