`

maven构建web应用

 
阅读更多

在进行web开发的时候,我们总是无法避免打开浏览器对应用进行测试,下面我们使用maven配置web应用。

 

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

 

使用jetty-maven-plugin十分简单。只需要指定该插件的坐标,并且稍加配置即可,详细代码如下:

 

<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>

 

我们需要注意到是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 具体如下:

  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>org.mortbay.jetty</pluginGroup>
 <pluginGroup>org.codehaus.cargo</pluginGroup> 
  </pluginGroups>

 

现在-可以运行如下命令即可

 

mvn jetty:run

 

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

 

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

 

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模式如下:

 

<plugin>
        <groupId>org.codehaus.cargo</groupId>
         <artifactId>cargo-maven2-plugin</artifactId>
          <version>1.2.3</version>
          <configuration>
            <container>
                <containerId>tomcat6x</containerId>
                 <home>E:\资料库\资料库\java\开发工具\tomcat\tomcat6\apache-tomcat-6.0.35</home>
            </container>
           
            <configuration>
              <type>standalone</type>
               <home>${project.build.directory}/tomcat6x</home>
               <properties>
                   <cargo.servlet.port>8081</cargo.servlet.port>

              <cargo.jvmargs>
                 -Xdebug
                -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
             </cargo.jvmargs>
               </properties>
            </configuration>
          </configuration>

     <executions>
        <execution>
         <id>cargo-run</id>
         <phase>pre-integration-test</phase>
       <goals>
       <goal>run</goal>
       </goals>
     </execution>
    </executions>
      </plugin>

 

 

由于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并部署应用,只需要运行

 

mvn cargo:start

 

 

默认情况下Cargo会让web容器监听8080端口,如果需要修改只需要配置

 

 

<properties>
                   <cargo.servlet.port>8081</cargo.servlet.port>
</properties>

现在就可以通过http://localhost:portal/project名称进行访问即可.

 

其中的设置远程调试

<cargo.jvmargs>
        -Xdebug
        -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
</cargo.jvmargs>

 

 绑定任务

<executions>
     <execution>
      <id>cargo-run</id>
      <phase>pakcage</phase>
      <goals>
       <goal>run</goal>
      </goals>
     </execution>
    </executions>

 

 <phase>package</phase> 将任务绑定到生命中的中的package阶段。

 

       

采用exitsting模式进行部署具体实现如下:

 

 <plugin>
        <groupId>org.codehaus.cargo</groupId>
         <artifactId>cargo-maven2-plugin</artifactId>
          <version>1.0</version>
          <configuration>
            <container>
                <containerId>tomcat6x</containerId>
                 <home>E:\资料库\资料库\java\开发工具\tomcat\tomcat6\apache-tomcat-6.0.35</home>
            </container>
            <configuration>
              <type>existing</type>
              <home>E:\资料库\资料库\java\开发工具\tomcat\tomcat6\apache-tomcat-6.0.35</home>
            </configuration>
          </configuration>
   </plugin>

 

基于上述配置运行mvn cargo:start之后,便能够在tomcat的webapps目录下看到被部署到Maven项目。

 

 

 

 

3.部署至远程web容器

 

除了让Cargo直接管理本地web容器然后部署应用之外,也可以让Cargo部署应用之远程的正在执行的web容器中,当然前提是有用容器的相应管理员权限。相关配置如下:
   <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.0</version>
    <configuration>
     <container>
      <containerId>tomcat6x</containerId>
      <type>remote</type>
     </container>
     <configuration>
      <type>runtime</type>
      <properties>
       <cargo.remote.username>admin</cargo.remote.username>
       <cargo.remote.password>password</cargo.remote.password>
       <cargo.remote.url>http://localhost:8080/manager</cargo.remote.url>
      </properties>
     </configuration>
    </configuration>
   </plugin>

 

我们可以使用 mvn cargo:redeploy进行部署,如果容器中已经部署了当前应用,Cargo会先将其卸载,然后在进行部署。

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Maven入门巨无霸视频教程(2.24G)

    使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、什么是私服、Maven为什么使用私服、Maven私服Nexus的安装使用、如何使用Maven构建Web应用、使用...

    maven-webstart:使用 Maven 构建 Java Webstart 应用程序的模板

    maven-webstart 使用 Maven 构建 Java Webstart 应用程序的模板。 此存储库包含多个示例项目,用于使用 Maven 构建 Java Webstart 应用程序。 不同的配置: 使用 JnlpDownloadServlet 使用自定义的 Jsp 作为 jnlp 而...

    chm版本Maven教程

    使用Maven创建Web应用程序项目 Maven POM Maven 构建生命周期 Maven 构建配置文件 Maven存储库 Maven插件 Maven创建Java项目 使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 ...

    maven-3.5.0多工程构建(spring4mvc分子项目)

    maven-3.5.0多工程构建(spring4mvc分子项目) 使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块... maven maven3.5.0 多工程构建 spring4mvc 子项目 maven构建项目 多模块项目 maven构建WEB项目

    Maven实战(高清版)

    背景案例第5章 坐标和依赖第6章 仓库第7章 生命周期和插件第8章 聚合与继承第9章 使用nexus创建私服第10章 使用maven进行测试第11章 使用hudson进行持续集成第12章 使用maven构建web应用第13章 版本管理第...

    Maven实战.pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 许晓斌 著

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    《Maven实战》

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 高清版pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    maven 教程

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 高清版

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven配置文档

    Maven进行测试、使用Hudson进行持续集成、使用 Maven构建 Web应用、Maven的版本管理、Maven的灵活构 建、生成项目站点和 Maven的 m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解 了如何 ...

    Maven实践-使用Maven开发Web应用.pdf

    比Ant更好用的项目构建工具,非常简单,好用。提高开发效率最好用的利器

    java-maven-calculator-web-app:一个Java计算器Web应用程序,由Maven构建,CICD由Jenkins构建

    Java计算器Web应用程序,由Maven构建,CI / CD由Jenkins构建。 1.通过Maven手动构建,测试和部署 1.1启动Nexus(可选) $ cd ~ /sonatype/nexus/bin $ ./nexus start 使用admin / admin123访问 。 1.2建立 $ mvn ...

    aeloy-web-archetype:创建 Maven Archetype 以简化使用 Maven 开始构建最新 Web 应用程序的过程

    Maven 原型这是 aeloy-web-archetype,它的创建是为了简化构建基于 Maven 的 Java Web 应用程序的引导过程。特征此原型将创建的 Web 应用程序将具有以下功能: JDK 1.7 版小程序 API 3.0 JSP API 2.3 JSTL 2.1 JUnit...

    Maven+Hibernate+Spring+Spring MVC开发新闻发布系统

    第6课 使用Maven构建多模块项目(一) 第7课 使用Maven构建多模块项目(二) 第8课 使用Nexus搭建Maven私服 第9课 使用Maven管理新闻系统开发-项目简介 第10课 使用Maven管理新闻系统开发-项目搭建(一) 第11课 ...

    maven-springboot-electron:仅使用Maven将Java Web应用程序与Electron + OpenJDK打包

    Maven + Springboot + Electron(+ OpenJDK) ... 在构建Electron应用程序时,将包含一个OpenJDK以启动Java Web应用程序 概念证明 该项目的目的是个人的兴趣,以表明该概念(Electron-&gt;出厂的JDK-&gt; Java Web Ap

    maven安装包

    以前做过的项目中,没有...最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目结构只停留在了解阶段,没有深入的使用与理解,刚好最近看了一篇关于Maven的详解;就开始深入学习一下Maven的具体应用。

Global site tag (gtag.js) - Google Analytics