Eclipse Maven Tomcat的利用配置

1.事先準備

m2eclipse插件中其實內嵌了Maven,但我的更偏向於用獨立的Maven(能夠自由選擇版本啦,偶爾能夠在命令行中跑Maven命令啦)。
下載Apache Maven:http://maven.apache.org/,關於環境變量的設置,能夠參照以下方法:
    1.建立M2_HOME,值設爲Maven的安裝路徑。如:%MY_WORKSPACE%\apache-maven-3.0.5
    2.在Path中添加%M2_HOME%\bin; 在命令行中輸入:mvn -version查看設置是否成功
另外,本地庫文件夾的路徑(Win7爲例)默認爲當前用戶文件夾下的.m2文件夾,能夠在settings.xml文件中經過<localRepository>設置更合適的路徑。 html

<localRepository>個人路徑</localRepository>

2.安裝m2eclipse插件

安裝m2eclipse插件很是簡單,直接經過Help -》 Install New Software...來安裝:
路徑:http://download.eclipse.org/technology/m2e/releases
(插件官網:http://eclipse.org/m2e/
安裝完之後,在eclipse的Window -》 Preferences下就能看到Maven的選項,選中Maven -》 Installations,點擊【add...】按鈕添加Maven的安裝路徑。 java

3.Tomcat的Maven插件安裝及熱部署

eclipse中tomcat服務器的設置再此就不作贅述,Java EE版可直接經過Preferences -》Server設置,standard版的須要安裝tomcat插件(http://www.eclipsetotale.com/tomcatPlugin.html)。
接下來,以tomcat7爲例講述如何安裝tomcat的maven插件(怎麼建maven工程也就不說啦。。。)
提供兩種方法,分別是利用插件內嵌tomcat和利用獨立的tomcat的方法。 web

方法一:插件內嵌tomcat中的熱部署

tomcat的maven插件其實已經內嵌了tomcat服務器,能夠直接利用,修改maven工程下的pom.xml文件添加以下語句: apache

<project ......>
  ......
  <!--設定tomcat7 maven插件的版本-->
  <properties>
    <tomcat7-maven-plugin-version>2.1</tomcat7-maven-plugin-version>
  </properties>
  ......
<build>
    ......
    <!--添加tomcat7 maven插件-->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>${tomcat7-maven-plugin-version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  
</project>

以後,用debug模式發佈該工程:pom.xml右鍵 -》 Debug as -》Maven Build... ,
在【Goals】中輸入:tomcat7:run
運行以後就會將工程發佈到指定的tomcat7中(第一次運行會下載tomcat7的maven插件)。
嘗試修改一下jsp等的內容,再次刷新頁面後能夠發現修改內容反映到了頁面中。
這種方法很是簡便,甚至不用在eclipse和maven中配置tomcat,但若是要對服務器作一些配置,內嵌的服務器可能並非很方便,因此下面就來講說如何在獨立的tomcat上進行熱部署。 tomcat

方法二:獨立tomcat中的熱部署(2013-8-11 更新)

在獨立的tomcat中部署仍須要tomcat的maven插件,因此在【方法一】的基礎上繼續配置,過程可能略有曲折。
1.在maven的settings.xml中對tomcat以及管理員的登陸帳戶密碼作必定的設置: 服務器

<server>
      <id>tomcat</id>
      <username>username</username>
      <password>password</password>
    </server>


2.在pom.xml中tomcat插件配置的中添加上服務器的信息: app

<project ......>
......
 <build>
    ......
      <plugins>
        <plugin>
          ......
          <configuration>
              <!--settings.xml中server的id相同-->
              <server>tomcat</server>
          </configuration>
        </plugin>
        ......
      </plugins>
  </build>
  
</project>

至此,在eclipse中啓動tomcat,運行命令:tomcat7:redeploy,已經能夠將工程發佈到tomcat服務器上了,只惋惜並非熱部署,每次修改都要進行發佈,很是麻煩。因此,繼續~ eclipse

3.經過m2eclipse創建的web工程tomcat並不認識,因此先要對工程做必定的轉化,
選中工程右鍵 -》Properties -》Project Facts ,勾選Dynamic Web Module,
完成後該工程就轉化成了一個tomcat認識的web工程。新生成的WebContent文件夾能夠直接刪除,並不須要。
而後,再次打開工程的Properties窗口,選擇Deployment Assembly,做以下配置: webapp

 Source  Deploy Path
 /src/main/java  WEB-INF/classes
 /src/main/resources  WEB-INF/classess
 /src/main/webapp  /
 Maven Dependencies  WEB-INF/lib

 

4.接下去麻煩的事情來了(這一段廢話較多,實際配置看第5點),在tomcat上實現熱部署,對於配置來講就是要在context中作將reloadable屬性設爲true,並對工程路徑進行配置,相似如下的代碼: jsp

<Context reloadable="true" docBase="${MY_PROJECT}\src\main\webapp" />

context在tomcat中一共能夠寫在5個地方,
1.META-INF/context.xml
2.%CATALINA_HOME%\conf\Catalina\localhost\[appname].xml
3.%CATALINA_HOME%\conf\Catalina\localhost\context.xml.default
4.%CATALINA_HOME%\conf\context.xml
5.%CATALINA_HOME%\conf\server.xml
嘗試下來熱部署的設置只在2,5兩處有效(也有可能有其餘辦法我沒發現),其中不推薦設置在server.xml中,undeploy的命令不能去除server.xml中的配置從而會致使再部署的失敗。
所以只有配置%CATALINA_HOME%\conf\Catalina\localhost\[appname].xml了,
但也有一個問題,tomcat的maven插件每次跑undeploy後會刪除該文件,而deploly命令並不會從新部署該xml文件,因此得用其餘辦法將該文件部署上去。

5.想到一個辦法,就是利用maven-antrun-plugin,利用ant命令將配有熱部署信息的xml文件上傳到服務器中,
pom文件的配置以下:

<project ......>
......
  <build>
     ......
  <properties>
    ......
    <maven-antrun-plugin-version>1.7</maven-antrun-plugin-version>
  </properties>
      <plugins>
        ......
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>${maven-antrun-plugin-version}</version>
          <executions>
              <execution>
                 <!--在package階段運行-->
                 <phase>package</phase>
                 <configuration>
                     <tasks>
                         <!--利用ant的copy命令複製文件-->
                         <copy todir=目標文件夾 file=源xml文件 />
                     </tasks>
                 </configuration>
                 <goals>
                     <goal>run</goal>
                 </goals>
              </execution>
          </executions>
        </plugin>
      </plugins>
  </build>
  
</project>

6.對於記載熱部署信息的xml文件,能夠放在任何位置,但文件名必定要和發佈的工程名相同,具體內容能夠參照如下內容:

<?xml version="1.0" encoding="UTF-8"?>
<Context ...... reloadable="true" docBase="${MY_PROJECT}\src\main\webapp" />

7.最後就是運行maven命令了,考慮到每次發佈前的clean操做,以及redeploy命令不能觸發package階段跑ant命令(這點比較怪)。最終的命令爲:【clean tomcat7:undeploy tomcat7:deploy】。
OK,至此終於能夠在獨立的tomcat上實現熱部署了~

=================2013-8-11 更新=============================
實際的項目中,每每打完的包在target目錄下,將6中docBase的目錄設置爲target下的目錄會比較好,
但有一個問題,就是資源文件以及jsp文件修改後不會同步到target目錄下。
爲了解決這個問題,能夠利用eclipse的一個插件fileSync。
該插件能夠實現某個文件夾下的文件修改後自動同步到另外一個指定的文件夾下的功能(增長,刪除也支持)。
使用方法比較簡單,就很少說了。
下載地址:
http://andrei.gmxhome.de/filesync/
http://marketplace.eclipse.org/content/filesync

另外,找jar包等能夠多去http://mvnrepository.com/,資源比較豐富,而且提供pom文件的配置說明。

相關文章
相關標籤/搜索