一.Web项目的目录结构 java
Web 项目的 POM 中须要显示地指定打包方式为 war ,其默认的 web 资源目录为 src/main/webapp/ ,在该目录下必须包含 WEB-INF/web.xml 。 web
二.Account-service apache
同一项目的其余模块,groupId和version都彻底同样,为了方便升级,可使用Maven 属性 ${project.groupId} 和 ${project.version} 进行替换。 api
javax.servlet.servlet-api 和 javax.servlet.jsp.jsp-api 这两个构建基本上全部 Web 项目都会依赖它们,但它们的依赖范围应该是 provided ,表示它们最终不会被打包到 war 文件中,这是由于几乎全部 Web 容器都会提供这两个类库。 tomcat
超级 POM 中定义了 fileName 元素(在 project 元素下)的默认值为 ${project.artifactId}-${project.version} ,该元素用来标识项目生成的主构件的名称。但为了在访问 web 项目页面的时候不输入冗长的地址,咱们会配置 fileName 元素为项目生成更为简洁的 war 包名。 app
三.Account-web eclipse
四.使用jetty-maven-plugin进行测试 webapp
jetty-maven-plugin 可以周期性地检查 Web 项目内容,发现编译后的文件变化后自动更新到内置的 Jetty Web 容器中。能够在 POM 文件中配置 jetty-maven-plugin : jsp
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.1.6.v20100715</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <webAppConfig> <contextPath>/test</contextPath> </webAppConfig> </configuration> </plugin>
用户如今就可使用http://hostname:port/test/访问该应用了。 maven
scanIntervalSeconds 的默认值为 0 ,也就是不扫描。配置 settings.xml :
<settings> <pluginGroups> <pluginGroup>org.mortbay.jetty</pluginGroup> </pluginGrous> </settings>
而后就能够运行以下命令启动jetty-maven-plugin:
mvn jetty:run –Djetty.port=9999
端口默认是 8080 。详细资料能够参考http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin
中止jetty只须要在命令行输入“Ctrl+C”。
五.使用Cargo实现自动化部署
1.概述
Cargo 是一组帮助用户操做 Web 容器的工具,它可以帮助用户实现自动化部署,并且它几乎支持全部的 Web 容器,如 Tomcat 、 JBoss 、 Jetty 和 Glassfish 等。
下面以tomcat为例。
2.部署至本地web容器
Cargo 支持两种本地部署的模式: standalone 和 existing 。
在 standalone 模式中, Cargo 会从 Web 容器的安装目录复制一份配置到用户指定的目录,而后在此基础上部署应用,每次从新构建的时候,这个目录都会被清空,全部配置被从新生成。
而在 existing 模式中,用户须要指定现有的 Web 容器配置目录,而后 Cargo 会直接使用这些配置并将应用部署到其对应的位置。
下面展现standalone模式的配置样例:<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat6x</containerId> <home>D:\cmd\apache-tomcat-6.0.29</home> </container> <configuration> <type>standalone</type> <home>${project.build.directory}/tomcat6x</home> <properties> <cargo.servlet.port>8081</cargo.servlet.port> </properties> </configuration> </configuration> </plugin>
configuration 元素的 home 子元素表示复制容器配置到什么位置,这里的值 ${project.build.directory} 表示构建输出目录,即 target/ 。 container 元素下的 containerId 表示容器的类型。
用户须要配置 settings.xml :
<settings> <pluginGroups> <pluginGroup>org.codehaus.cargo</pluginGroup> </pluginGrous> </settings>
运行如下命令让Cargo启动Tomcat并部署应用:
mvn cargo:start
默认状况下,Cargo 默认会让 Web 容器监听 8080 端口。能够经过修改Cargo的cargo.servlet.port属性来改变这一配置。
要使用 existing 模式只需更改 configuration 元素:
<configuration> <type>existing</type> <home> D:\cmd\apache-tomcat-6.0.29</home> </configuration>
这里 home 子元素表示现有的 Web 容器目录。运行 mvn cargo:start 以后就会在 Tomcat 的 webapps 子目录下看到被部署的 web 项目。
3. 部署至远程web容器
对于远程部署,container元素的type子元素值必须为remote(默认值为installed)。configuration元素type子元素值为runtime,表示既不使用独立的容器配置,也不使用本地现有的容器配置,而是依赖一个已运行的容器。Properties元素用来声明一些容器热部署相关的配置,能够参考:http://cargo.codehaus.org/Maven2+plugin。
运行 mvn cargo:redeploy就能从新部署web项目了。