设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 6799|回复: 0
打印 上一主题 下一主题

[Eclipse&MyEclipse] maven构建web应用

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-9-25 22:12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在进行web开发的时候,我们总是无法避免打开浏览器对应用进行测试,下面我们使用maven配置web应用。

1.采用jetty插件部署web项目

使用jetty-maven-plugin十分简单。只需要指定该插件的坐标,并且稍加配置即可,详细代码如下:
  1. <plugin>
  2.     <groupId>org.mortbay.jetty</groupId>
  3.     <artifactId>jetty-maven-plugin</artifactId>
  4.     <version>7.1.6.v20100715</version>
  5.     <configuration>
  6.      <scanIntervalSeconds>10</scanIntervalSeconds>
  7.      <webAppConfig>
  8.       <contextPath>/test</contextPath>
  9.      </webAppConfig>
  10.     </configuration>
  11.    </plugin>
复制代码
我们需要注意到是jetty-maven-plugin并不是官方的Maven插件,它的groupId是org.mortbay.jetty,上述代码中使用的了jetty7的最新版本,在该插件的配置中scanIntervalSeconds顾名思义表示该插件扫描项目变更的时间间隔,如果不进行配置那么扫描的间隔就为0,而webappConfig元素下跌contextPath表示该项目部署后的context path即可通过 http://hostname:port/test 进行访问。

我们在启动jetty是需要进行稍微的改动,由于jetty-maven-plugin的插件groupId是org.mortbay.jetty,在默认情况下只有org.apache.maven.plugins  和 prg.codehaus.mojo两个groupId下单插件才支持简化的命定行调用,所以需要修改${MAVEN_HOME}/conf/settings.xml 具体如下:
  1. <pluginGroups>
  2.     <!-- pluginGroup
  3.      | Specifies a further group identifier to use for plugin lookup.
  4.     <pluginGroup>com.your.plugins</pluginGroup>
  5.     -->
  6.     <pluginGroup>org.mortbay.jetty</pluginGroup>
  7. <pluginGroup>org.codehaus.cargo</pluginGroup>
  8.   </pluginGroups>
复制代码
现在-可以运行如下命令即可
  1. mvn jetty:run
复制代码
jetty-maven-plugins  会启动Jetty,并且默认监听本地的8080端口,并将当前的项目部署到容器中,同时还会根据用户配置扫描代码改动。

如果希望使用其他端口,可以添加jetty.port参数例如:
  1. mvn jetty:run -Djetty.port=9999
复制代码
要停止jetty容器,只需要采用Ctrl+C即可。


2.使用Cargo实现自动化部署

Cargo是一组帮助用户操作web容器的工具 ,它能够帮助用户实现自动化部署,而且它几乎支持所有的web容器,如tomcat,jetty,jboss和Glassfish等,Cargo通过cargo-maven2-plugin提供了Maven的集成,mavne用户可以使用该插件将web项目部署到web容器中,虽然cargo-mavne2-plugin与jetty-maven-plugin的功能看起来很相似,但它们的目的不同,jetty-maven-plugin 主要用来帮助日常的快速开发,而cargo-mavne2-plugin主要服务于自动化部署。

Cargo支持两种本地部署到方式,分别为standalone模式和existing模式。在standlone模式中,Cargo会从Web容器中的安装目录复制一份配置到用户指定的目录,然后再此目录下进行部署应用,每次重新构建时候这个目录都会被清空。

配置Cargo中的standalonee模式如下:


由于cargo-maven2-plugin 的groupId是org.codehaus.cargo,这不是官方的两个Maven插件,因此用户需要在setting中进行配置。

上述的cargo-maven2-plugin的具体配置包括了container和configuration的两个元素,configuration元素中的type表示部署到模式,home元素表示复制容器到什么位置,这里的值为${project.build.directory},表示的是构建输出目录,即target/下的tomcat6x目录。container元素下的containerId表示容器的类型,hoem表示容器的安装目录。

要让Cargo启动tomcat并部署应用,只需要运行
  1. mvn cargo:start
复制代码
默认情况下Cargo会让web容器监听8080端口,如果需要修改只需要配置
  1. <div><properties></div><div>                   <cargo.servlet.port>8081</cargo.servlet.port></div><div></properties></div>
复制代码
现在就可以通过http://localhost:portal/project 名称进行访问即可.

其中的设置远程调试
  1. <cargo.jvmargs>
  2.         -Xdebug
  3.         -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
  4. </cargo.jvmargs>
复制代码
绑定任务
  1. <executions>
  2.      <execution>
  3.       <id>cargo-run</id>
  4.       <phase>pakcage</phase>
  5.       <goals>
  6.        <goal>run</goal>
  7.       </goals>
  8.      </execution>
  9.     </executions>
复制代码
<phase>package</phase> 将任务绑定到生命中的中的package阶段。

采用exitsting模式进行部署具体实现如下:
  1. <plugin>
  2.         <groupId>org.codehaus.cargo</groupId>
  3.          <artifactId>cargo-maven2-plugin</artifactId>
  4.           <version>1.0</version>
  5.           <configuration>
  6.             <container>
  7.                 <containerId>tomcat6x</containerId>
  8.                  <home>E:\资料库\资料库\java\开发工具\tomcat\tomcat6\apache-tomcat-6.0.35</home>
  9.             </container>
  10.             <configuration>
  11.               <type>existing</type>
  12.               <home>E:\资料库\资料库\java\开发工具\tomcat\tomcat6\apache-tomcat-6.0.35</home>
  13.             </configuration>
  14.           </configuration>
  15.    </plugin>
复制代码
基于上述配置运行mvn cargo:start之后,便能够在tomcat的webapps目录下看到被部署到Maven项目。

3.部署至远程web容器

除了让Cargo直接管理本地web容器然后部署应用之外,也可以让Cargo部署应用之远程的正在执行的web容器中,当然前提是有用容器的相应管理员权限。相关配置如下:
  1.   <plugin>
  2.     <groupId>org.codehaus.cargo</groupId>
  3.     <artifactId>cargo-maven2-plugin</artifactId>
  4.     <version>1.0</version>
  5.     <configuration>
  6.      <container>
  7.       <containerId>tomcat6x</containerId>
  8.       <type>remote</type>
  9.      </container>
  10.      <configuration>
  11.       <type>runtime</type>
  12.       <properties>
  13.        <cargo.remote.username>admin</cargo.remote.username>
  14.        <cargo.remote.password>password</cargo.remote.password>
  15.        <cargo.remote.url>http://localhost:8080/manager</cargo.remote.url>
  16.       </properties>
  17.      </configuration>
  18.     </configuration>
  19.    </plugin>
复制代码
我们可以使用 mvn cargo:redeploy进行部署,如果容器中已经部署了当前应用,Cargo会先将其卸载,然后在进行部署。

由于自动化部署本身就不是很简单的事情,在加上Cargo要兼容各种不同类型的web容器,以此cargo-maven2-plugin的相关配置显得很复杂,这个时候的文档显得尤为重要,如果想进一步了解cargo,可以访问http://cargo.codehaus.org/Maven2+plugin.

from:http://liuwuhen.iteye.com/blog/1679454
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-5-3 12:01 , Processed in 0.087799 second(s), 36 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表