一.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項目了。