Maven构建Web应用

一、jetty-maven-plugin介绍

1. maven中配置 jetty-maven-plugin:

  pom.xml文件中如下配置:

 1 <plugin>
 2     <groupId>org.mortbay.jetty</groupId>
 3     <artifactId>jetty-maven-plugin</artifactId>
 4     <version>7.1.0.RC1</version>
 5     <configuration>
 6         <scanIntervalSeconds>10</scanIntervalSeconds>
 7         <webAppConfig>
 8             <contextPath>/account</contextPath>
 9         </webAppConfig>
10     </configuration>
11 </plugin>
View Code

 注:在上述配置中,scanIntervalSeconds表示该插件扫描项目变更的时间间隔,如果不进行配置,该元素的默认值是0,表示不扫描,也就失去了自动化热部署的功能;contextPath表示项目部署后的context path,例如这里的值为/account,表示用户可以通过http://hostname:port/account访问该应用。

2. 在启动jetty之前需要在maven的配置文件settings.xml做个改动,以便让maven支持简化的命令好调用jetty插件,配置如下:

     在用户配置文件settings.xml中找到<pluginGroups></pluginGroups>,并在其中添加如下配置:

              <pluginGroup>org.mortbay.jetty</pluginGroup>

  现在就可以运行如下命令启动jetty-maven-piugin:

    $mvn jetty:run

  jetty-maven-piugin会启动jetty,并且默认监听本地的8080端口,并将当前项目部署到容器中,同时会根据用户配置扫描代码改动。

3. 如果希望使用其他端口,可以添加 jetty.port参数,例如:

   $mvn jetty:run -Djetty.port=9990

4. 如要停止jetty,只需要在命令行输入Ctrl+C即可。

如需要进一步研究jetty,可访问页面:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

二、使用Cargo实现自动化部署介绍

1. Cargo是一组帮组用户操作Web容器的工具,它能够帮助用户实现自动化部署,而且它支持基础所有的Web容器,如tomcat、JBoss、Jetty等。Cargo通过cargo-mavne2-plugin提供maven集成。

2. 以tomcat7为例,介绍如果自动化将Web应用部署至本地或远程Web容器中。

2.1 部署至本地Web容器

  Cargo支持两种本地部署方式,分别是standalone模式和existing模式,在standalone模式中,Cargo会从Web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成。在existing模式中,用户需要指定现有的Web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到期对应的位置。下面是配置样例:(在项目的pom.xml文件中配置):

注:如果需要让maven支持cargo的简化命令行调用,需要在maven的setting.xml配置文件中找到<pluginGroups></pluginGroups>,并在其他配置<pluginGroup>org.codehaus.cargo</pluginGroup>

2.1.1 使用standalone模式部署应用至本地web容器 

 1 <plugin>
 2     <groupId>org.codehaus.cargo</groupId>
 3     <artifactId>cargo-maven2-plugin</artifactId>
 4     <version>1.4.9</version>
 5     <configuration>
 6         <container>
 7             <containerId>tomcat7x</containerId>
 8             <home>E:apache-tomcat-7.0.37</home>
 9         </container>
10             <configuration>
11                 <type>standalone</type>
12                 <home>${project.build.directory}/tomcat7x</home>
13                 <properties>
14                     <!-- cargo默认监听8080端口,可通过此设置其他端口 -->
15                     <cargo.servlet.port>8082</cargo.servlet.port>
16                 </properties>
17         </configuration>
18     </configuration>
19 </plugin>
View Code
配置解释:
configuraton元素: 
  container元素:
    containerId:容器类型;
    home:容器的安装目录;
  configuration元素:
    type:部署模式;
    home:表示复制容器配置到什么位置,这里的值${project.build.directory}/tomcat7x表示构建输出目录,即target/tomcat7x子目录。
  properties元素:
    cargo.servlet.port:容器监听端口号;
 
 要让Cargo启动tomcat并部署应用,只需要运行:
    $mvn cargo:start
 
2.1.2 使用existing模式部署应用至本地web容器
<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.9</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <home>E:apache-tomcat-7.0.37</home>
            </container>
            <configuration>
                <type>existing</type>
                <home>E:apache-tomcat-7.0.37</home>
            </configuration>
    </configuration>
</plugin>
View Code

2.2 部署至远程的正在运行的Web容器

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.9</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <type>remote</type>
        </container>
        <configuration>
            <type>runtime</type>
            <properties>
                <cargo.remote.username>admin</cargo.remote.username>
                            <cargo.remote.password>admin</cargo.remote.password>
                          <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>
            </properties>
        </configuration>
    </configuration>
</plugin>
View Code

 注:配置的用户需要拥有该容器的相应管理员权限,我的admin用户设置的tomcat权限为“manager-script”,设置此权限即可部署成功,不过建议再设置“manager-gui”权限,这个权限可以让admin用户登陆到tomcat的管理页面。

对于远程部署的方式,container元素的type子元素的值必须是remote,如果不显式指定,Cargo会使用默认值installed,并寻找对应的容器安装目录或者安装包,对于远程部署方式,安装目录或者安装包是不需要的。configuration的type子元素值为runtime,表示既不使用独立的容器配置,也不使用本地现有的本地配置,而是依赖于一个已运行的容器,properties元素用来声明一些容器热部署相关的配置。需要注意,这部分配置元素对于所有容器来说不是一致的,需要查阅对应的Cargo文档。

运行命令:

$mvn cargo:redeploy

既可以部署当前应用,如果容器已经部署该应用,cargo会先将其卸载,然后在重新部署。

如果想进一步了解Cargo,可访问: http://cargo.codehaus.org/Maven2+plugin

原文地址:https://www.cnblogs.com/wy2185/p/4665046.html