Tomcat Maven Plugin使用

原文同步至:http://www.waylau.com/tomcat-maven-plugin/html

Apache Tomcat 的 Maven 插件提供了 goal,實現將 Apache Tomcat servlet 容器整合進 WAR 項目。你能夠經過 Apache Maven 運行 WAR 項目而無需部署 WAR 文件到 Apache Tomcat 的實例。java

<!-- more -->apache

詳見下面網站:tomcat

##源碼:安全

svn 路徑:服務器

http://svn.apache.org/repos/asf/tomcat/maven-plugin/trunk/session

##功能:maven

  • 支持 Apache Tomcat7
  • 構建一個可執行的 War/Jar

##使用svn

自從版本 2.0-beta-1之後, tomcat mojos 改名爲 tomcat6 和 tomcat7,使用配置以下:post

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat6-maven-plugin</artifactId>
      <version>2.3-SNAPSHOT</version>
    </plugin>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.3-SNAPSHOT</version>
    </plugin>
  </plugins>
</pluginManagement>

或者添加 groupId 到你的 settings.xm

<pluginGroups>
    ....
    <pluginGroup>org.apache.tomcat.maven</pluginGroup>
    ....
 </pluginGroups>

###在 tomcat 發佈不顯示項目名稱

配置以下

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
	<configuration>
	<path>/</path>
	</configuration>
</plugin>

##Context Goals

###部署 WAR 項目

在 tomcat:deploy 部署後,再次部署 WAR 執行:

mvn package tomcat6/7:redeploy

在執行 tomcat:exploded 後,再次部署 WAR 執行:

mvn war:exploded tomcat6/7:redeploy

在執行 tomcat:inplace 後,再次部署 WAR 執行:

mvn war:inplace tomcat6/7:redeploy

在執行 tomcat:deploy 後,再次部署 context.xml 文件執行:

mvn tomcat6/7:redeploy

注意: context.xml指定 docBase後 ,還須要像上面那樣調用 war:exploded或者war:inplace

###移除部署 WAR 項目

mvn tomcat6/7:undeploy

###啓動 WAR 項目

mvn tomcat6:start

###中止 WAR 項目

mvn tomcat6:stop

###列出會話統計表

mvn tomcat6:sessions

##Container Goals

###列出部署的應用s

mvn tomcat6:list

###列出服務器信息

mvn tomcat6:info

###列出 JNDI 資源

列出 Tomcat 版本, 操做系統, 和 JVM 等信息

mvn tomcat6:resources

另外,列出特定類型你能夠只輸入 JNDI 資源類型:

mvn -Dmaven.tomcat.type=my.class.name tomcat6:resources

###列出安全角色

mvn tomcat6:roles

##構建一個可執行的 War/Jar

版本 2.0 開始,嵌入的 Apache Tomcat7 能夠構建一個可執行的 War/Jar(只支持 tomcat7 插件)

注意:項目必須有 pom 或者 war 的打包信息

###添加到您的 war 模塊:

<project>
  ...
  <packaging>war or pom</packaging>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.3-SNAPSHOT</version>
        <executions>
          <execution>
            <id>tomcat-run</id>
            <goals>
              <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <path>foo</path>
              <!-- optional, needed only if you want to use a preconfigured server.xml file -->
              <serverXml>src/main/tomcatconf/server.xml</serverXml>
              <!-- optional values which can be configurable -->
              <attachArtifactClassifier>default value is exec-war but you can customize</attachArtifactClassifier>
              <attachArtifactClassifierType>default value is jar</attachArtifactClassifierType>
            </configuration>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

###添加到 pom 模塊

<project>
  ...
  <packaging>war</packaging>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.3-SNAPSHOT</version>
        <executions>
          <execution>
            <id>tomcat-run</id>
            <goals>
              <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <!-- optional only if you want to use a preconfigured server.xml file -->
              <!--
              <serverXml>src/main/tomcatconf/server.xml</serverXml>
              -->
              <warRunDependencies>
                <warRunDependency>
                  <dependency>
                    <groupId>a groupId</groupId>
                    <artifactId>and artifactId</artifactId>
                    <version>version</version>
                    <type>war</type>
                  </dependency>
                  <contextPath>/</contextPath>
                </warRunDependency>
              </warRunDependencies>
              <!-- naming is disabled by default so use true to enable it -->
              <enableNaming>true</enableNaming>
              <!-- extra dependencies to add jdbc driver, mail jars, etc. -->
              <extraDependencies>
                <extraDependency>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derby</artifactId>
                  <version>10.1.3.1</version>
                </extraDependency>
                <extraDependency>
                  <groupId>javax.mail</groupId>
                  <artifactId>mail</artifactId>
                  <version>1.4</version>
                </extraDependency>
              </extraDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

###生成可執行的 War/Jar

在上面配置下,執行

java -jar yourjar

下面是使用幫助

usage: java -jar [path to your exec war jar]
 -ajpPort <ajpPort>                     ajp port to use
 -clientAuth                            enable client authentication for
                                        https
 -D <arg>                               key=value
 -extractDirectory <extractDirectory>   path to extract war content,
                                        default value: .extract
 -h,--help                              help
 -httpPort <httpPort>                   http port to use
 -httpProtocol <httpProtocol>           http protocol to use: HTTP/1.1 or
                                        org.apache.coyote.http11.Http11Nio
                                        Protocol
 -httpsPort <httpsPort>                 https port to use
 -maxPostSize <maxPostSize>             max post size in bytes to use
 -keyAlias <keyAlias>                   alias from keystore for ssl
 -loggerName <loggerName>               logger to use: slf4j to use slf4j
                                        bridge on top of jul
 -obfuscate <password>                  obfuscate the password and exit
 -resetExtract                          clean previous extract directory
 -serverXmlPath <serverXmlPath>         server.xml to use, optional
 -X,--debug                             debug

##已知限制

一些 goal 不在 tomcat7 mojo。 這些在 tomcat6 mojo 中的 container goal,須要修改你的 manager url :

使用 http://localhost:8080/manager/text 替換默認的 tomcat6 url

相關文章
相關標籤/搜索