前言
在使用傳統(tǒng)的Java Web開發(fā)時(shí),對(duì)于項(xiàng)目部署可以借助MyEclipse中自帶的部署工具,直接一鍵部署,但是,在使用Maven開發(fā)Java Web項(xiàng)目時(shí),我們遵循Maven的項(xiàng)目組織結(jié)構(gòu),就不能直接一鍵部署了。
那么,有什么解決方法嗎?
首先,我們要清楚web服務(wù)器的概念,Jetty和Tomcat都是Web服務(wù)器,在這里我選擇使用Jetty來作為開發(fā)測(cè)試階段的部署服務(wù)器,而Tomcat作為項(xiàng)目實(shí)際發(fā)布時(shí)的部署服務(wù)器。至于,為什么這樣做,主要是Tomcat體積比較龐大,而Jetty更加輕巧,但是Tomcat的穩(wěn)定性是無可厚非的,所以,實(shí)際部署的服務(wù)器,我選擇的依然是Tomcat。要是你嫌麻煩也可以只用Tomcat進(jìn)行開發(fā)、測(cè)試、發(fā)布的服務(wù)器。
使用Jetty進(jìn)行開發(fā)測(cè)試部署
maven中添加Jetty配置
把下面的配置添加到Maven的配置文件pom.xml中的<build><plugins></plugins></build>
標(biāo)簽內(nèi)(沒有則在<project>標(biāo)簽內(nèi)創(chuàng)建)。
<!-- 添加此插件以便啟動(dòng)jetty -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<encoding>UTF-8</encoding>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
部署
項(xiàng)目根目錄下運(yùn)行下面的命令,之后打開頁面http://localhost:8080/項(xiàng)目名稱
,你將看到默認(rèn)的index.html頁面的內(nèi)容。
mvn jetty:run
使用Tomcat進(jìn)行實(shí)際發(fā)布部署
Tomcat6的用戶及權(quán)限配置
提示:其他Tomcat版本類似
在conf目錄下,找到tomcat-users.xml,添加manager權(quán)限的用戶。這里我把所用的權(quán)限都添加給admin用戶了,具體代碼如下:
<role rolename="manager-status"/>
<role rolename="manager"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="admin,manager,manager-gui,admin-gui,manager-script,manager-jmx,manager-status"/>
Maven的Server的配置
在Maven的安裝路徑找到conf目錄下的setting.xml文件,在<servers>節(jié)點(diǎn)中添加tomcat6下配置的用戶信息(id可以任意填寫,但username和password必須和上面步驟一致):
<server>
<id>tomcat6</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
maven中添加Tomcat配置
在Web項(xiàng)目的pom.xml文件的<plugins>節(jié)點(diǎn)中,添加tomcat6的maven插件。
把下面的配置添加到Maven的配置文件pom.xml中的<build><plugins></plugins></build>
標(biāo)簽內(nèi)。
<!--添加此插件以便啟動(dòng)tomcat-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<server>tomcat6</server>
<username>admin</username>
<password>admin</password>
<!--本地Tomcat的端口號(hào)-->
<url>http://localhost:8081/manager</url>
<path>/bh</path>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
部署
到此所有配置完成,然后就可進(jìn)行熱部署了。
本地部署
在myeclipse中運(yùn)行,非遠(yuǎn)程(tomcat沒有啟動(dòng),這樣會(huì)啟用一個(gè)內(nèi)部的Tomcat服務(wù)器)
運(yùn)行: clean tomcat6:run
重新部署: clean tomcat6:redeploy
清除部署: tomcat6:undeploy
遠(yuǎn)程部署
在遠(yuǎn)程服務(wù)器運(yùn)行(tomcat必須啟動(dòng)),執(zhí)行完后去tomcat webapp目錄下看看發(fā)生了生命
部署: clean tomcat6:deploy
重新部署:clean tomcat6:redeploy
Jetty和Tomcat混合部署
Jetty和Tomcat混合部署就是把Jetty和Tomcat的部署插件在Maven的pom.xml中都給配置上。一般開發(fā)時(shí)用Jetty部署,正式發(fā)布用Tomcat部署。