1、Jetty的配置参数
关于其他命令的更多信息请查阅Jetty文档中的mvn jetty:run page、mvn jetty:run-exploded page、mvn jetty:run-war page。
自动执行插件
有时候,例如在做集成测试时,你当然希望在测试开始时自动运行你的项目,测试完成时停止,而不只是手动的在命令行执行mvn jetty:run吧。
要做到这一点,你需要为jetty 插件创建几个<execution>脚本,并使用<daemon>true</daemon>配置选项来预防Jetty无限期运行,迫使它只在执行Maven时才运行。
像下面pom.xml片段中描述的pre-integration-test和post-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.plugins的groupId来查找插件的,即使这个groupId跟上面要表达的内容完全不同。为了更明确的指向这个groupId是我们需要的插件,唯一的办法就是在settings.xml也做如下设置:
<profile>
...
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
</profile>
如何通过命令行停止插件
委托Jetty插件无限期运行的目标包括run、run-war和run-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
1. 在src/main/resources目录下创建jetty-env.xml文件,用来配置数据源,文件内容如下:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
- "http://jetty.mortbay.org/configure.dtd">
- <Configure class="org.mortbay.jetty.webapp.WebAppContext">
- <New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource">
- <Arg>jdbc/osworkflow</Arg>
- <Arg>
- <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
- <Set name="url">jdbc:mysql://localhost:3306/osworkflow?useUnicode=true&characterEncoding=UTF-8</Set>
- <Set name="user">root</Set>
- <Set name="password"></Set>
- </New>
- </Arg>
- </New>
- </Configure>
2. 在配置jetty插件时,指定这个数据源配置文件:
- <plugins>
- <!- jetty ->
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.9</version>
- <configuration>
- <scanIntervalSeconds>10</scanIntervalSeconds>
- <jettyEnvXml>src/main/resources/jetty-env.xml</jettyEnvXml>
- </configuration>
- </plugin>
- </plugins>
3. 测试。在index.jsp中进行如下测试:
- <%@ page contentType="text/html; charset=UTF-8"%>
- <%@ page import="javax.naming.InitialContext,javax.sql.DataSource"%>
- <html>
- <head>
- <title>JNDI datasource test</title>
- </head>
- <body>
- <h2>数据源初始化成功!</h2>
- <%
- InitialContext context = new InitialContext();
- DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/osworkflow");
- %>
- </body>
- </html>
4、Jetty中配置根目录启动应用,不再需要输入工程名称
- <configuration>
- <contextPath>/</contextPath>
- </configuration>
完整版本:
- <jetty-version>6.1.22</jetty-version>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>${jetty-version}</version>
- <configuration>
- <contextPath>/</contextPath>
- <connectors>
- <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
- <port>8081</port>
- <maxIdleTime>60000</maxIdleTime>
- </connector>
- </connectors>
- <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
- <filename>target/access.log</filename>
- <retainDays>90</retainDays>
- <append>false</append>
- <extended>false</extended>
- <logTimeZone>GMT+8:00</logTimeZone>
- </requestLog>
- <systemProperties>
- <systemProperty>
- <name>productionMode</name>
- <value>false</value>
- </systemProperty>
- </systemProperties>
- </configuration>
- </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
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/423405,如需转载请自行联系原作者