配置指南:http://blog.csdn.net/ph9527/article/details/5063157

1、Jetty的配置引數

 關於其他命令的更多資訊請查閱Jetty文件中的mvn jetty:run pagemvn jetty:run-exploded pagemvn jetty:run-war page

自動執行外掛

   有時候,例如在做整合測試時,你當然希望在測試開始時自動執行你的專案,測試完成時停止,而不只是手動的在命令列執行mvn jetty:run吧。

   要做到這一點,你需要為jetty 外掛建立幾個<execution>指令碼,並使用<daemon>true</daemon>配置選項來預防Jetty無限期執行,迫使它只在執行Maven時才執行。

  像下面pom.xml片段中描述的pre-integration-testpost-integration-test 就是用來觸發執行和關閉Jetty

<plugin>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>maven-jetty-plugin</artifactId>

        <version>6.1.10</version>

        <configuration>

                <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>

 

         注意Maven預設都是通過org.apache.maven.pluginsgroupId來查詢外掛的,即使這個groupId跟上面要表達的內容完全不同。為了更明確的指向這個groupId是我們需要的外掛,唯一的辦法就是在settings.xml也做如下設定:

       <profile>

                 …

                                       <pluginGroups>

                                         <pluginGroup>org.mortbay.jetty</pluginGroup>

                                       </pluginGroups>

</profile>

 

如何通過命令列停止外掛

  委託Jetty外掛無限期執行的目標包括runrun-warrun-exploded。你可以在視窗控制終端(如DOS視窗)使用<ctrl-c>關閉它,或者在另一個視窗控制終端使用stop目標關閉。如果你希望能使用mvn jetty:stop 執行關閉命令,則需要你在外掛中配置一個特殊的埠和控制鍵。下面是一個例子配置:

<plugin>

        <groupId>org.mortbay.jetty</groupId>

        <artifactId>maven-jetty-plugin</artifactId>

        <version>6.1.10</version>

        <configuration>

          <stopPort>9966</stopPort>

          <stopKey>foo</stopKey>

        </configuration>

</plugin>

開始:

mvn jetty:start

關閉:

mvn jetty:stop

 

在使用jetty外掛除錯maven war專案時,我們可能需要為servlet容器(這裡是jetty)配置一個資料來源。下面介紹如何為jetty外掛配置資料來源。 

1. 在src/main/resources目錄下建立jetty-env.xml檔案,用來配置資料來源,檔案內容如下: 

Xml程式碼 <embed>
  1. <?xml version=“1.0” encoding=“utf-8”?>  
  2. <!DOCTYPE Configure PUBLIC “-//Mort Bay Consulting//DTD Configure//EN”  
  3. “http://jetty.mortbay.org/configure.dtd”>  
  4. <Configure class=“org.mortbay.jetty.webapp.WebAppContext”>  
  5.     <New id=“dataSource” class=“org.mortbay.jetty.plus.naming.Resource”>  
  6.         <Arg>jdbc/osworkflow</Arg>  
  7.         <Arg>  
  8.             <New class=“com.mysql.jdbc.jdbc2.optional.MysqlDataSource”>  
  9.                 <Set name=“url”>jdbc:mysql://localhost:3306/osworkflow?useUnicode=true&characterEncoding=UTF-8</Set>  
  10.                 <Set name=“user”>root</Set>  
  11.                 <Set name=“password”></Set>  
  12.             </New>  
  13.         </Arg>  
  14.     </New>  
  15. </Configure>  

2. 在配置jetty外掛時,指定這個資料來源配置檔案: 

Xml程式碼 <embed>
  1. <plugins>  
  2.     <!- jetty –>  
  3.     <plugin>  
  4.         <groupId>org.mortbay.jetty</groupId>  
  5.         <artifactId>maven-jetty-plugin</artifactId>  
  6.         <version>6.1.9</version>  
  7.         <configuration>  
  8.             <scanIntervalSeconds>10</scanIntervalSeconds>  
  9.             <jettyEnvXml>src/main/resources/jetty-env.xml</jettyEnvXml>  
  10.         </configuration>  
  11.     </plugin>  
  12. </plugins>  

3. 測試。在index.jsp中進行如下測試: 

Jsp程式碼 <embed>
  1. <%@ page contentType=“text/html; charset=UTF-8”%>  
  2. <%@ page import=“javax.naming.InitialContext,javax.sql.DataSource”%>  
  3. <html>  
  4. <head>  
  5. <title>JNDI datasource test</title>  
  6. </head>  
  7. <body>  
  8. <h2>資料來源初始化成功!</h2>  
  9. <%  
  10.     InitialContext context = new InitialContext();  
  11.     DataSource dataSource = (DataSource) context.lookup(“java:comp/env/jdbc/osworkflow”);  
  12. %>  
  13. </body>  
  14. </html>  

 4、Jetty中配置根目錄啟動應用,不再需要輸入工程名稱

  1. <configuration> 
  2.                     <contextPath>/</contextPath> 
  3.                 </configuration> 

完整版本:

  1. <jetty-version>6.1.22</jetty-version> 
  2.  
  3.   <plugin> 
  4.                 <groupId>org.mortbay.jetty</groupId> 
  5.                 <artifactId>maven-jetty-plugin</artifactId> 
  6.                 <version>${jetty-version}</version> 
  7.                 <configuration> 
  8.                     <contextPath>/</contextPath> 
  9.                     <connectors> 
  10.                         <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
  11.                             <port>8081</port> 
  12.                             <maxIdleTime>60000</maxIdleTime> 
  13.                         </connector> 
  14.                     </connectors> 
  15.                     <requestLog implementation="org.mortbay.jetty.NCSARequestLog"> 
  16.                         <filename>target/access.log</filename> 
  17.                         <retainDays>90</retainDays> 
  18.                         <append>false</append> 
  19.                         <extended>false</extended> 
  20.                         <logTimeZone>GMT+8:00</logTimeZone> 
  21.                     </requestLog> 
  22.                     <systemProperties> 
  23.                         <systemProperty> 
  24.                             <name>productionMode</name> 
  25.                             <value>false</value> 
  26.                         </systemProperty> 
  27.                     </systemProperties> 
  28.                 </configuration> 
  29.             </plugin> 

 5、Jetty Debug

方式1:set MAVEN_OPTS =-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

 

方式2:mvndebug jetty:run