2013-09-27 110 views
1

設置maven webapp項目的正確形式是什麼?如何設置eclipse/webapp maven?

應該能夠:

與Eclipse嵌入的Tomcat(在服務器選項卡中提供)
  • 運行。 這樣我就可以像普通的webapp一樣運行/調試應用程序。
  • 使用maven插件tomcat7運行。到目前爲止,我只能運行在運行戰爭 目標,不可能讓「運行」目標的工作=/

我按照一些教程,但不可能使所有這些東西才能正常工作。 當我遵循MkYong建議時,我可以使用嵌入式tomcat運行,但是項目依賴關係更改爲類路徑變量。這完全不是一個好結果,因爲項目失去了動態設置依賴關係的能力。我使用Eclipse Juno(我寧願等待開普勒幾個月來檢查它是否非常穩定),m2e和m2e-wtp插件,並且有兩種項目:一種基於JSF(前端-end)和另一個在Apache CXF中(後端)。我希望這兩個可以在開發環境中熱部署(當資源發生變化時,嵌入式tomcat會自動發佈它)以提高生產力。由Eclipse IDE中創建

回答

0

Source taken from

Web應用程序包含一個惱人的WebContent文件夾來承載網絡資源和部署描述符。對於Eclipse用戶來說這是非常自然的,這個特性忽略了Maven約定,並且強迫開發人員破解pom文件以便在Eclipse中啓動並運行項目。在這方面,即使你考慮非常好的M2Eclipse插件,Eclipse如果遠遠落後於其他IDE的Maven支持。因此,對於懶惰的聖誕節黑客來說,這裏是基於maven-war-plugin的Eclipse中Maven集成問題的解決方案。

ERRATA:請使用WTP插件而不是更改項目結構。在寫這篇博客之後,我想出了wtp插件,所以我建議你只檢查下面指令的第一步和第三步。如果您確實需要或想要更改項目結構,我會保留原始的博客信息。

  1. 在Eclipse中創建一個Web項目:在Project Explorer

    新建>右鍵單擊項目>網絡\動態Web項目

  2. 創建一個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> 
    

  3. 編譯並準備Eclipse的項目:

    mvn -Dwtpversion=2.0 compile eclipse:eclipse 
    

通知插件-Dwtpversion的使用,使Maven來的Eclipse WTP支持添加到項目中。這個簡單的國旗做伎倆:)。實際上只使用該標誌是可行的,但並不是所有的Eclipse插件都可以在沒有WebContent文件夾的情況下工作 - 這取決於你是否值得修改你的項目結構或者直接使用普通的Maven夾。

完成後,現在您可以在Eclipse中刷新項目並繼續工作。請記住,jjust資源文件夾在Eclipse中是硬編碼的,src/main/java會像Maven期望的那樣繼續。也許有一天我們可以在Maven和Eclipse的約定之間達成一致,然後我們終於可以擺脫這種日常黑客行爲了。

0

我們使用開普勒,我們發現它非常穩定。您可以創建一個正常的動態Web項目,然後右鍵單擊並使該項目啓用Maven。然後你有熱部署和Maven管理POM。 你也可以在那裏擁有所有的Maven目標。