Maven Jetty Plugin 配置指南(二)
如何配置插件
配置公共的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"。另外,您也可以指定许多您想要的连接。??[译注:(美国)国家超级计算技术应用中心 (NCSA) 公用格式是常用的标准日志格式]
“手动重载”
从Jetty 6.2.0pre0版本起,添加了一个新的可用组件,用于控制web应用的重新部署。
配置参数:<reload>[manual|automatic]</reload>
当你设置成手动模式后,web应用不会自动的扫描和重部署。相反,用户可以控制的Web应用时,通过键入”回车换行键”重载。当设置成自动模式时,将根据scanIntervalSeconds参数的设置不定时的扫描和自动重部署。你也能通过在命令行使用系统参数
-Djetty.reload 配置选择重载的模式。
比如:"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>?? ? ? ? ??
你也可以查看jetty:run-war parameter reference.