zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第四节课-反向传播&&神经网络1
    第三节课-损失函数和优化
    Logistic回归python实现
    第二节课-Data-driven approach:KNN和线性分类器分类图片
    在Java项目中部署使用Memcached[转]
    Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
    Django object filter查询[转]
    Linux查看文件编码格式及文件编码转换<转>
    Django 模板标签[转]
    linux下java unrecognized class file version错误的解决
  • 原文地址:https://www.cnblogs.com/wy2185/p/4665046.html
Copyright © 2011-2022 走看看