如何配置插件
配置公共的run, run-war 和 run-exploded 目标
不管你执行哪一个Jetty目标,下述的配置参数都是可用的。一般来说它们分为应用于Web容器级别的配置和应用于具体web应用级别的配置:
容器级配置
-
Connectors 可选 . 一组 org.mortbay.jetty.Connector 对象,包含 jetty 的端口监听。如果你不指定任何一个 NIO 的 org.mortbay.jetty.nio.SelectChannelConnector , 将默认配置一个 8080 端口。当然,你可以在命令行使用系统参数 jetty.port 改变默认端口。例如 "mvn -Djetty.port=9999 jetty:run" 。另外,您也可以指定许多您想要的连接。
-
jettyConfig 可选 。除插件配置参数外,你也可以指定一个 jetty.xml 文件的路径。当你有其他的 web 应用和操作需要部署时,或者一些你无法在插件中配置的 jetty 对象 , 你就可以使用到它 , 。
-
scanIntervalSeconds 可选 [ 秒 ] 。 在很短的时间间隔内在扫描 web 应用检查是否有改变,如果发觉有任何改变则自动热部署。默认为 0 ,表示禁用热部署检查。任何一个大于 0 的数字都将表示启用。
-
userRealms 可选。 一组 org.mortbay.jetty.security.UserRealm 实现。请注意,它没有一个默认的 Realm 。如果你在你的 web.xml 应用了一个 Realm, 你需要在这里指定一个对应的 Rleam 。
-
requestLog 可选。 一个 org.mortbay.jetty.RequestLog 请求日志接口的实现。比如 org.mortbay.jetty.NCSARequestLog 就是一个作为 NCSA 格式的实现。
[译注:(美国)国家超级计算技术应用中心 (NCSA) 公用格式是常用的标准日志格式]
“手动重载” 从Jetty 6.2.0pre0版本起,添加了一个新的可用组件,用于控制web应用的重新部署。 配置参数:<reload>[manual|automatic]</reload> 当你设置成手动模式后,web应用不会自动的扫描和重部署。相反,用户可以控制的Web应用时,通过键入”回车换行键”重载。当设置成自动模式时,将根据scanIntervalSeconds参数的设置不定时的扫描和自动重部署。你也能通过在命令行使用系统参数 比如:"mvn -Djetty.reload=manual jetty:run" 将强制手动重载,不管pom.xml文件里如何配置。同理: "mvn -Djetty.reload=automatic -Djetty.scanIntervalSeconds=10 jetty:run" 每隔十秒中后台将重载一次,而不管pom.xml文件里如何配置。 |
Web应用级配置
-
contextPath 可选 。这个 contex 地址指向你的 webapp. 默认情况下,它被设置成该项目的 pom.xml 的 <artifactId> 。当然你也可以设置一个你喜欢的从而覆盖它。
-
tmpDir 可选 。它作为 web 应用的临时目录。它默认设置在 { ${basedir}/target } 下,但是你也可在这里改变它的路径。
-
overrideWebXml 可选 . 它是一个应用于 web 应用的 web.xml 的备用 web.xml 文件 . 这个文件可以存放在任何地方 . 你可以根据不同的环境中 ( 如测试、开发等等 ) 利用它增加或修改一个 web.xml 配置 .
-
webDefaultXml 可选 . webdefault.xml 文件用来代替 webapp 默认提供给 jetty 的文件 .
从6.1.6rc0发行版开始,一个替代的更灵活的方式是配置web应用时使用webAppConfig元素代替上面列出的那些单独的参数。使用webAppConfig元素,你能有效的调用org.mortbay.jetty.webapp.WebAppContext类中任何setter方法。下面显示的列子将展示这个元素跟它上面的例子比较是如何配置同样的特性的(当然它们还有更多的特性能让你设置):
<project>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<!—web应用的配置 -->
<contextPath>/biggerstrongerbetterfaster</contextPath>
<tmpDir>target/not/necessary</tmpDir>
<webDefaultXml>src/main/resources/webdefault.xml</webDefaultXml>
<overrideWebXml>src/main/resources/override-web.xml</overrideWebXml>
<!—从jetty6.1.6rc0起, 你能用webAppConfig 元素代替
<webAppConfig>
<contextPath>/test</contextPath>
<tempDirectory>${project.build.directory}/work</tempDirectory>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
<overrideDescriptor>src/main/resources/override-web.xml</overrideDescriptor>
</webAppConfig>
-->
<!—容器的配置 -->
<jettyConfig>/my/special/jetty.xml</jettyConfig>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9090</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<userRealms>
<userRealm implementation="org.mortbay.jetty.security.HashUserRealm">
<name>Test Realm</name>
<config>etc/realm.properties</config>
</userRealm>
</userRealms>
<requestLog implementation="org.mortbay.jetty.NCSARequestLog">
<filename>target/yyyy_mm_dd.request.log</filename>
<retainDays>90</retainDays>
<append>true</append>
<extended>false</extended>
<logTimeZone>GMT</logTimeZone>
</requestLog>
</configuration>
</plugin>
</plugins>
</project>
配置 jetty:run 目标
run目标允许你把你未打包的web应用部署到Jetty.它包含在你的pom.xml文件的一部分元素里。下面额外的配置参数都是可用到的:
-
classesDirectory 这是你的 web 应用编译的 classes 存放的路径。你很少需要设置这个参数,其实可以在你的 pom.xml 用 <build><outputDirectory> 替代它。
-
webAppSourceDirectory 默认设置在 ${basedir}/src/main/webapp 下。如果你的源文件夹结构跟左边不同,就可以设置这个参数。
-
webXml 默认设置在 ${maven.war.webxml } 或者${basedir}/src/main/webapp/WEB-INF/web.xml,无论哪个文件都不是空的。如果觉得前两者都不合适,就设置它。
-
jettyEnvXml 可选。 它指向一个 jetty-env.xml 文件的路径。允许你创建 JNDI 绑定并满足 web.xml 中 <env-entry> 、 <resource-env-ref> 和 <resource-ref> 元素中的条件。当然这个文件的使用范围仅仅在你的当前应用和其他应用同时部署时它并没有共享的情况下。 ( 例如使用一个 jettyConfig 文件 )
-
scanTargets 可选。 周期性的扫描除了插件自动扫描外的文件和文件夹列表。
-
scanTargetPatterns 可选。 如果你想扫描有一长串的额外文件,通过使用模式匹配表达式制定它们更加方便,它可以用来替代 <scanTargets> 参数的枚举展示。这个参数包含一组 <scanTargetPattern> 。每一个都是由一个 <directory> 和 <includes>[ 或者 <excludes>] 参数来指定文件的匹配模式。
下面的示例设置了所有这些参数:
<project>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<webAppSourceDirectory>${basedir}/src/staticfiles</webAppSourceDirectory>
<webXml>${basedir}/src/over/here/web.xml</webXml>
<jettyEnvXml>${basedir}/src/over/here/jetty-env.xml</jettyEnvXml>
<classesDirectory>${basedir}/somewhere/else</classesDirectory>
<scanTargets>
<scanTarget>src/mydir</scanTarget>
<scanTarget>src/myfile.txt</scanTarget>
</scanTargets>
<scanTargetPatterns>
<scanTargetPattern>
<directory>src/other-resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<excludes>
<exclude>**/myspecial.xml</exclude>
<exclude>**/myspecial.properties</exclude>
</excludes>
</scanTargetPattern>
</scanTargetPatterns>
</configuration>
</plugin>
</plugins>
</project>
你也可以查看jetty:run parameter reference。
配置jetty:run-war目标
这个目标将首先把你的web应用打包成一个war文件,再发布到Jetty。如果你设置扫描间隔为非零,Jetty将观察你的pom.xml和war文件。如果有任何变化,它都将重新打包并部署war。
配置参数的详细描述如下:
-
webApp 打包后 war 的路径。默认为 ${project.build.directory}/${project.build.finalName}.war 。如果目标存储空间不足,设置它到你的自定义路径下。
详细设置如下:
<project>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<webApp>${basedir}/target/mycustom.war</webApp>
</configuration>
</plugin>
</plugins>
</project>