`
hanqunfeng
  • 浏览: 1541964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Maven实战》学习笔记(6)--部署

 
阅读更多

一。远程部署

1.使用cargo-maven2-plugin插件

<build>
        <finalName>hello</finalName>    <!-- war包名称 -->
        <plugins>           
            <plugin>
                <!-- 指定插件名称及版本号 -->
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.0.3</version>

                <!-- 插件的Tomcat6.x配置 -->
                <configuration>
                    <wait>true</wait>   <!--是否说明,操作start、stop等后续操作必须等前面操作完成才能继续 -->
                    <container>         <!-- 容器的配置 -->
                        <containerId>tomcat6x</containerId> <!-- 指定tomcat版本,tomcat7x不支持远程部署,可以为tomcat5x,tomcat6x -->
                        <type>remote</type>  <!-- 指定类型:表示远程部署-->
                    </container>

                    <configuration>           <!-- 具体的配置 -->
                        <type>runtime</type>   <!-- 类型,tomcat运行时 -->
                        <properties> <!-- 配置属性 -->
                        <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url> <!-- 管理地址 -->
                        <cargo.remote.username>admin</cargo.remote.username>         <!-- Tomcat用户名 -->
                        <cargo.remote.password>admin</cargo.remote.password>         <!-- Tomcat密码 -->
                        </properties>
                    </configuration>
                </configuration>

                <executions>
                    <!-- 执行的动作,如果不指定,可以执行执行mvn cargo:redeploy ,需要在settings.xml中声明groupId  -->
                    <execution>
                        <id>verify-deployer</id>
                        <phase>install</phase>  <!-- 关联到install阶段,执行mvn install即可完成部署 -->
                        <goals>
                            <goal>redeploy</goal><!-- 实际调用cargo的redeploy目标 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

 

 

二。本地部署

1.使用cargo-maven2-plugin插件
1.1standalone
启动命令:mvn install
<build>
        <finalName>hello</finalName>
       
        <plugins>
            <plugin>
                <!-- 指定插件名称及版本号 -->
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.0.3</version>

                <!-- 插件的Tomcat6.x配置 -->
                <configuration>
                    <wait>true</wait>       <!--是否说明,操作start、stop等后续操作必须等前面操作完成才能继续 -->
                    <container>          <!-- 容器的配置 -->
                        <containerId>tomcat7x</containerId>         <!-- 指定tomcat版本 -->                                    
                        <home>F:\maven_workspace\apache-tomcat-7.0.5-windows-x86\apache-tomcat-7.0.5</home>    <!-- 指定Tomcat的位置 -->
                    </container>

                    <configuration>    <!-- 具体的配置 -->
                        <type>standalone</type> <!-- 类型,standalone:复制tomcat配置到指定位置     existing:直接部署到tomcat的webapps -->
                        <home>${project.build.directory}/tomcat7</home>   <!--  指定复制Tomcat到什么位置,真正的工作目录  -->
                        <properties> <!-- 配置属性 -->
                            <cargo.servlet.port>8081</cargo.servlet.port>     <!-- 端口 -->
                        </properties>
                               
                    </configuration>

                </configuration>

                <executions>
                    <!-- 执行的动作,如果不指定,可以执行执行mvn cargo:start,需要在settings.xml中声明groupId  -->
                    <execution>
                        <id>verify-deployer</id>
                        <phase>install</phase>      <!-- 关联到install阶段,执行mvn install即可完成部署 -->
                        <goals>
                            <goal>start</goal>      <!-- 实际调用cargo的start目标 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
1.2existing
启动命令:mvn install
<build>
        <finalName>hello</finalName>
       
        <plugins>
            <plugin>
                <!-- 指定插件名称及版本号 -->
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.0.3</version>

                <!-- 插件的Tomcat6.x配置 -->
                <configuration>
                    <wait>true</wait>       <!--是否说明,操作start、stop等后续操作必须等前面操作完成才能继续 -->
                    <container>          <!-- 容器的配置 -->
                        <containerId>tomcat7x</containerId>         <!-- 指定tomcat版本 -->                                    
                        <home>F:\maven_workspace\apache-tomcat-7.0.5-windows-x86\apache-tomcat-7.0.5</home>    <!-- 指定Tomcat的位置 -->
                    </container>

                    <configuration>    <!-- 具体的配置 -->
                        <type>standalone</type> <!-- 类型,standalone:复制tomcat配置到指定位置     existing:直接部署到tomcat的webapps -->
                        <home>F:\maven_workspace\apache-tomcat-7.0.5-windows-x86\apache-tomcat-7.0.5</home>    <!-- 指定Tomcat的位置 -->

                       
                               
                    </configuration>

                </configuration>

                <executions>
                    <!-- 执行的动作,如果不指定,可以执行执行mvn cargo:start,需要在settings.xml中声明groupId  -->
                    <execution>
                        <id>verify-deployer</id>
                        <phase>install</phase>      <!-- 关联到install阶段,执行mvn install即可完成部署 -->
                        <goals>
                            <goal>start</goal>      <!-- 实际调用cargo的start目标 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

2.使用jetty-maven-plugin
启动命令:mvn install
    <build>
        <finalName>hello</finalName>
       
        <plugins>
       
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>8.0.4.v20111024</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <webAppConfig>
                        <contextPath>/test</contextPath><!-- 测试时没有起作用,只能通根路径访问,既localhost:8080,应该是maven版本的问题,maven2下使用其它版本的jetty-maven-plugin,构建时会报错,maven3下使用该插件没有问题 -->
                    </webAppConfig>
                </configuration>
               
                <executions>
                    <!-- 执行的动作 -->
                    <execution>
                        <id>verify-deployer</id>
                        <phase>install</phase>     
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
           
        </plugins>
    </build>

以上插件如果要在命令行执行其各自的命令简写,需要在settings.xml中配置
    <pluginGroups>
        <pluginGroup>org.mortbay.jetty</pluginGroup>
        <pluginGroup>org.codehaus.cargo</pluginGroup>
    </pluginGroups>

 

三。本地测试-tomcat热部署debug

 

maven tomcat eclipse debug 调试 + hot code replace 热部署

参考资料:http://jaymsimusic.iteye.com/blog/1160118

maven tomcat eclipse debug 调试 + hot code replace 热部署
文章分类:Java编程上网找了好久都没找到,网上只有运行mvn package 打包,并利用tomcat manager功能部署到tomcat 下的文章,如果我修改了一个java文件,不得不重新打包部署一下,这佯做开发效率极低,影响用maven的心情,经过自己的反复试验,终于可以实行hot code replace了,就是修改了一个文件不用重新部署了,就可以使用debug了。
试验环境:
eclipse+ tomcat+ tomcatPlugin+maven3 关于怎么安装,就得大家自己找文章了
我们用petclinic项目为大家演示热部署。petclinic是spring官方的一个非常经典的例子
petclinic svn路径 https://src.springframework.org/svn/spring-samples/petclinic/trunk
配置使用
1。修改tomcat的server.xml文件,加入

1
<Context docBase="E:\workspace\petclinic\src\main\webapp" path="/petclinic" reloadable="false"></Context>
意思是指定tomcat运行项目的目录,在这里我们指定E:\workspace\petclinic\src\main\webapp ,src\main\webapp 是maven web规范,存放java web的相关资源。
2。右键单击项目,选择build path,将default output folder设置为 petclinic/src/main/webapp/WEB-INF/classes,并将
petclinic/src/main/resource的Excluded设置为None,默认是**,意思是让eclipse编译java和resource文件编译到petclinic/src/main/webapp/WEB-INF/classes目录

3。 运行 mvn war:inplace petclinic/src/main/webapp/WEB-INF下,就有lib文件了
4。用eclipse插件运行tomcat,项目就可以运行了,修改任意一java类,可以实时生效,打断点也能够调试了。

注意:要关联tamcat下的jar包。

该配置可以 聚合项目的debug,在需要debug外部项目时手工关联即可。

举例:.classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
    <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v7.0"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

但这样会有一个问题,就是如果有需要替换为maven属性的资源文件就不会被替换了。可以使用jetty-maven-plugin解决这个问题,不过就是path尚不好使。

所以,可以使用上面的配置方式与maven-antrun-plugin插件结合,进行资源文件的替换,各个环境,可以结合profile使用
也就是说,本地开发使用本地的资源进行开发和测试,其它环境在使用maven进行替换

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                    <!-- 执行的动作 -->
                    <execution>
                        <id>ant-copy</id>
                        <phase>prepare-package</phase>      <!-- 绑定到prepare-package 阶段-->
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks> <!-- 调用ant的copy任务执行资源文件替换 -->
                                <echo message="prepare-release run" />
                                <copy todir="${project.build.directory}/classes/config" overwrite="true">
                                    <fileset dir="${project.basedir}/config/release" />
                                </copy>
                                <echo message="prepare-release completed!" />
                            </tasks>
                        </configuration>
                    </execution>
                    可以定义多个动作
                </executions>
            </plugin>

分享到:
评论

相关推荐

    Maven入门实战笔记02-基础(2)

    总的来说,"Maven入门实战笔记02-基础(2)"很可能是对Maven基础操作的深入讲解,涵盖了项目创建、POM配置、依赖管理、生命周期和构建过程等内容,对于想要学习和掌握Maven的Java开发者来说,是一份非常实用的学习资料...

    Maven3实战笔记(整合)

    从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...

    Maven3实战笔记(全)

    6. **构建Web应用程序**:对于Web项目,Maven提供了war插件来打包Web应用为WAR文件,适用于部署到Servlet容器如Tomcat。同时,可以通过`&lt;war&gt;&lt;webResources&gt;`配置资源复制和过滤。 7. **多模块项目**:Maven支持多...

    Maven中文开发指南+实战教程+学习笔记

    **Maven实战教程** 1. **创建新项目** - 使用`mvn archetype:generate`命令创建一个新的Maven项目。 - 选择合适的archetype模板,根据提示输入项目信息。 2. **项目构建与调试** - 使用`mvn install`命令将项目...

    Maven3实战笔记02项目需求和模块分析

    在Maven3的实战学习中,第二部分着重于项目需求分析与模块划分,这是构建大型、复杂项目时的基础工作,能够帮助开发者更好地理解项目架构,合理分配资源,提高开发效率。 #### 项目需求分析 项目需求分析是软件...

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven实战笔记

    **Maven实战笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过一个统一的项目对象模型(Project Object Model,POM),使得开发者可以轻松地定义...

    Maven学习资源打包汇总

    《Maven实战》是一本实践导向的书籍,涵盖了Maven在实际项目中的应用,包括设置环境变量、配置构建服务器、集成持续集成工具如Jenkins,以及使用Maven进行部署。此外,它还介绍了一些高级话题,如使用Maven进行敏捷...

    maven3含教程

    **正文** Maven3是一个强大的Java项目管理工具,由Apache软件基金会开发,它极大地简化了...通过"apache-maven-3.0.4"的使用和"Maven3实战笔记"的学习,开发者可以全面掌握Maven的精髓,更好地服务于软件开发工作。

    springboot学习笔记(史上最全)

    **SpringBoot学习笔记** SpringBoot是由Pivotal团队开发的一款基于Java的轻量级框架,旨在简化Spring应用的初始搭建以及开发过程。它通过自动配置、起步依赖和运行时嵌入式服务器,使得开发者能够快速地创建独立的...

    ant maven3

    4. **Maven3实战笔记-书签版-《jianggq工作室》.pdf**:这是一本关于Maven3的实战教程,可能包含了Maven3的使用技巧、最佳实践和常见问题解决,适合Maven初学者和进阶者阅读。 5. **Mavenʵס.pdf**:这个文件名可能...

    j2ee学习笔记.rar

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专门针对企业级应用开发。它提供了一个全面的框架,用于构建、部署和管理分布式多层企业应用程序。本笔记主要围绕J2EE的...

    Apache_cxf_学习笔记

    Apache CXF 是一个开源的...本学习笔记将继续深入探讨CXF的高级特性,如消息处理、安全控制、异常处理等,并提供更多的实战案例来帮助读者更好地理解和应用Apache CXF。在实践中不断探索,将助你成为CXF的熟练使用者。

    SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】的课程主要关注如何将Spring Boot与Apache Shiro框架结合起来,实现高效的安全管理。Spring Boot是Spring框架的一个简化版本,旨在提高开发效率,减少配置工作,同时提供了很...

    Eclipse开发学习笔记

    《Eclipse开发学习笔记》这本书涵盖了Eclipse的基础知识、高级特性以及实战技巧,是初学者入门和进阶的良好资源。通过学习,读者不仅可以掌握Eclipse的基本操作,还能了解到如何利用Eclipse进行高效开发,以及如何...

    SpringBoot学习笔记.rar

    压缩包中的"SpringBoot学习笔记.pdf"很可能包含了Spring Boot的概述、核心概念、实战案例、常见问题及解决方案等内容。建议按照文档结构逐步学习,同时结合实际编程练习,以加深理解和记忆。此外,查阅官方文档和...

    java学习笔记(包含web开发技术的原理配置)

    Java学习笔记是一个全面涵盖Java基础知识和Web开发技术的资源,非常适合初学者和进阶者深入理解这门语言及其在Web开发中的应用。这份文档可能包含了从语法基础到高级特性的详细讲解,以及如何将Java应用于Web环境的...

Global site tag (gtag.js) - Google Analytics