11,使用maven構建web應用

一.Web項目的目錄結構 java

    Web 項目的 POM 中須要顯示地指定打包方式爲 war ,其默認的 web 資源目錄爲 src/main/webapp/ ,在該目錄下必須包含 WEB-INF/web.xml web

Account-service apache

    同一項目的其餘模塊,groupId和version都徹底同樣,爲了方便升級,可使用Maven 屬性 ${project.groupId} 和 ${project.version} 進行替換。 api

    javax.servlet.servlet-api  javax.servlet.jsp.jsp-api 這兩個構建基本上全部 Web 項目都會依賴它們,但它們的依賴範圍應該是 provided ,表示它們最終不會被打包到 war 文件中,這是由於幾乎全部 Web 容器都會提供這兩個類庫。 tomcat

    超級 POM 中定義了 fileName 元素(在 project 元素下)的默認值爲 ${project.artifactId}-${project.version} ,該元素用來標識項目生成的主構件的名稱。但爲了在訪問 web 項目頁面的時候不輸入冗長的地址,咱們會配置 fileName 元素爲項目生成更爲簡潔的 war 包名。 app

三.Account-web eclipse

四.使用jetty-maven-plugin進行測試 webapp

    jetty-maven-plugin 可以週期性地檢查 Web 項目內容,發現編譯後的文件變化後自動更新到內置的 Jetty Web 容器中。能夠在 POM 文件中配置 jetty-maven-plugin : jsp

<plugin>  
  <groupId>org.mortbay.jetty</groupId>  
  <artifactId>jetty-maven-plugin</artifactId>  
  <version>7.1.6.v20100715</version>  
  <configuration>  
    <scanIntervalSeconds>10</scanIntervalSeconds>  
    <webAppConfig>  
      <contextPath>/test</contextPath>  
    </webAppConfig>  
  </configuration>  
</plugin>

    用戶如今就可使用http://hostname:port/test/訪問該應用了。 maven

    scanIntervalSeconds 的默認值爲 0 ,也就是不掃描。配置 settings.xml 

<settings>  
  <pluginGroups>  
    <pluginGroup>org.mortbay.jetty</pluginGroup>  
  </pluginGrous>  
</settings>

    而後就能夠運行以下命令啓動jetty-maven-plugin:

        mvn jetty:run –Djetty.port=9999

    端口默認是 8080 。詳細資料能夠參考http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

    中止jetty只須要在命令行輸入「Ctrl+C」。

五.使用Cargo實現自動化部署

1.概述

    Cargo 是一組幫助用戶操做 Web 容器的工具,它可以幫助用戶實現自動化部署,並且它幾乎支持全部的 Web 容器,如 Tomcat  JBoss  Jetty  Glassfish 等。

    下面以tomcat爲例。

2.部署至本地web容器

    Cargo 支持兩種本地部署的模式: standalone  existing 

    在 standalone 模式中, Cargo 會從 Web 容器的安裝目錄複製一份配置到用戶指定的目錄,而後在此基礎上部署應用,每次從新構建的時候,這個目錄都會被清空,全部配置被從新生成。

    而在 existing 模式中,用戶須要指定現有的 Web 容器配置目錄,而後 Cargo 會直接使用這些配置並將應用部署到其對應的位置。

    下面展現standalone模式的配置樣例:
<plugin>  
  <groupId>org.codehaus.cargo</groupId>  
  <artifactId>cargo-maven2-plugin</artifactId>  
  <version>1.0</version>  
  <configuration>  
    <container>  
      <containerId>tomcat6x</containerId>  
      <home>D:\cmd\apache-tomcat-6.0.29</home>  
    </container>  
    <configuration>  
       <type>standalone</type>  
      <home>${project.build.directory}/tomcat6x</home>  
      <properties>  
        <cargo.servlet.port>8081</cargo.servlet.port>  
      </properties>  
    </configuration>  
  </configuration>  
</plugin>

    configuration 元素的 home 子元素表示複製容器配置到什麼位置,這裏的值 ${project.build.directory} 表示構建輸出目錄,即 target/  container 元素下的 containerId 表示容器的類型。

    用戶須要配置 settings.xml 

<settings>  
  <pluginGroups>  
    <pluginGroup>org.codehaus.cargo</pluginGroup>  
  </pluginGrous>  
</settings>

    運行如下命令讓Cargo啓動Tomcat並部署應用:

        mvn cargo:start

    默認狀況下,Cargo 默認會讓 Web 容器監聽 8080 端口。能夠經過修改Cargo的cargo.servlet.port屬性來改變這一配置。

    要使用 existing 模式只需更改 configuration 元素:

<configuration>  
  <type>existing</type>  
  <home> D:\cmd\apache-tomcat-6.0.29</home>  
</configuration>

    這裏 home 子元素表示現有的 Web 容器目錄。運行 mvn cargo:start 以後就會在 Tomcat  webapps 子目錄下看到被部署的 web 項目。

3.       部署至遠程web容器

    對於遠程部署,container元素的type子元素值必須爲remote(默認值爲installed)。configuration元素type子元素值爲runtime,表示既不使用獨立的容器配置,也不使用本地現有的容器配置,而是依賴一個已運行的容器。Properties元素用來聲明一些容器熱部署相關的配置,能夠參考:http://cargo.codehaus.org/Maven2+plugin

    運行 mvn cargo:redeploy就能從新部署web項目了。

相關文章
相關標籤/搜索