`

用cargo插件部署war包,并支持debug

 
阅读更多
在eclipse里创建的web工程,可以简单地发布到eclipse管理的容器里,开发很方便 

不过对于多maven工程聚合的项目,就没有办法这样简单地“一键发布”了,为了达到同样的目的,可以使用cargo插件 

一、配置pluginGroup,以支持前缀调用 

首先cargo插件不是官方的,所以需要在settings.xml里配置pluginGroup 
Xml代码  收藏代码
  1. <pluginGroups>  
  2.     <pluginGroup>org.codehaus.cargo</pluginGroup>  
  3. </pluginGroups>  

二、为什么提示启动成功,但是实际上无法访问 

我一开始是按照《Maven实战》中的例子来配的,但是这本书版本比较老,用的是cargo-maven2-plugin1.0.0,所以没有cargo:run这个goal,只有cargo:start 

但是cargo:start需要额外配置一个<wait>的参数,否则的话虽然cargo:start可以把容器启动,但是在maven生命周期跑完之后,容器也就立刻关闭了 

见官方说明: 

Note: A container that's started with cargo:start will automatically shut down as soon as the parent Maven instance quits (i.e., you see a BUILD SUCCESSFUL or BUILD FAILED message). If you want to start a container and perform manual testing, see our next goal cargo:run. 

所以昨天我试了半天,提示说容器启动成功,但是实际上根本看不见容器的进程,十分蛋疼。 

增加<wait>true</wait>的参数,可以解决这个问题,容器启动之后,会等待用户按下Ctrl + C,不会立刻自动关闭。但是这个方法也不好,因为在新版本的cargo插件中,<wait>是一个deprecated的参数,即将被删除 

见官方说明: 

Important: This parameter has been deprecated and will be removed soon. If you want to do manual testing, please use the cargo:run MOJO. 

三、正确的做法 

以下是pom的配置 
Xml代码  收藏代码
  1. <plugin>  
  2.                 <groupId>org.codehaus.cargo</groupId>  
  3.                 <artifactId>cargo-maven2-plugin</artifactId>  
  4.                 <version>1.2.3</version>  
  5.                 <configuration>  
  6.                     <container>  
  7.                         <containerId>tomcat7x</containerId>  
  8.                         <home>D:\apache-tomcat-7.0.29</home>  
  9.                     </container>  
  10.                     <configuration>  
  11.                         <type>standalone</type>  
  12.                         <home>${project.build.directory}/tomcat7.0.29</home>  
  13.                         <properties>  
  14.                             <cargo.jvmargs>  
  15.                                 -Xdebug  
  16.                                 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787  
  17.                             </cargo.jvmargs>  
  18.                         </properties>  
  19.                     </configuration>  
  20.                 </configuration>  
  21.             </plugin>  

这里关键是cargo的版本是1.2.3,这个版本有了cargo:run的goal 

<container> --> <containerId>是目标容器的标识,这里不允许自定义,必须是cargo规定的几个值,比如tomcat6x、tomcat7x、jboss71x等,完整的列表见:http://cargo.codehaus.org 

<container> --> <home>是本地容器的安装路径 

<configuration> --> <type>可以选择standalone和existing两种模式,我感觉standalone比较好一点 

<configuration> --> <home>是容器引入工程后保存的路径,和上面的<home>是不同的 

如上配置之后,输入mvn clean package cargo:run,则以debug模式启动了容器 

四、在eclipse中调试 
第三步运行成功之后,进入【Run】-> 【Debug Configurations..】,找到Remote Java Application,右键new一个出来,然后project选择你的web项目,host就选择写host,port注意要和POM写的端口一致。
配置完毕之后,直接点run,就可以进入调试模式了,如下图所示:



 
 
要结束调试时,在Perspective-->Debug中,点一下红色方块即可 

  • 大小: 48.2 KB
分享到:
评论

相关推荐

    使用Maven Cargo 插件管理Tomcat6的部署

    在IT行业中,管理和部署Web应用程序是一项关键任务,而Maven Cargo插件则为开发者提供了一个强大的工具,使得在Tomcat6上部署应用变得更加便捷。Cargo是一个用于自动化服务器和容器管理的Java库,它允许开发者在多种...

    cargo远程部署web项目资料

    在pom.xml文件中,你需要添加Cargo插件的配置,包括目标容器(如Tomcat)、部署的目标URL、部署的WAR文件路径等。例如: ```xml &lt;groupId&gt;org.codehaus.cargo &lt;artifactId&gt;cargo-maven2-plugin ...

    maven cargo自动化部署tomcat7.pdf

    通过以上知识点,可以看出在Maven下使用Cargo插件实现自动化部署Tomcat7的过程是相对复杂的,涉及到对Maven、Cargo、Tomcat以及它们配置的深入理解。配置正确的POM文件、Tomcat服务器权限和Maven全局设置是保证部署...

    美团IDEA插件实现Java应用的热部署实践

    在美团内部,很多工程师每天本地重启服务高达5~12次,单次大概3~8分钟,每天向Cargo(美团内部测试环境管理工具)部署3~5次,单次时长20~45分钟,部署频繁频次高、耗时长,严重影响了系统上线的效率。因此,美团开发...

    尚硅谷学习笔记+代码,Maven 教程

    尚硅谷学习笔记+代码,Maven 教程 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 ...部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

    Cargo实现自动化部署

    使用cargo-maven2-plugin插件配置Tomcat本地自动发布 .

    teamcity-rust-plugin:TeamCity Rust和Cargo插件

    TeamCity Rust插件 TeamCity Rust插件为编程语言带来了构建基础结构支持。特征它为Rust项目提供以下功能: 通过安装Rust工具链货运指挥员货物测试记者结构化构建日志侦听器自动发现构建步骤在Docker中运行步骤在...

    cargo-deny-Cargo插件可帮助您管理大型依赖图-Rust开发

    :cross_mark:cargo-deny cargo-deny是一个货运插件,用于减少依赖项。 有关详细文档,请参见the。 为了以CI作为GitHub Action在CI上运行,:cross_mark:cargo-deny cargo-deny是一个用于简化依赖关系的cargo插件。 ...

    maven架构工程

    通过配置Maven的`war`插件,我们可以生成这些WAR文件并部署到合适的服务器。 ** 4. Cargo插件 ** Cargo是一款Maven插件,用于自动化Web应用的部署和管理。它可以与多种应用服务器(如Tomcat、Jetty等)集成,支持...

    cargo-jetty-7-and-onwards-deployer-1.6.5.war

    cargo jetty-7-and-onwards-deployer-1.6.5,自动上传部署

    gradle-cargo-plugin:Gradle插件,可通过Cargo为本地和远程容器提供部署功能

    Gradle Cargo Plugin是一款强大的构建工具Gradle的插件,它集成了Cargo库,使得开发者能够方便地对Web应用程序进行本地和远程的部署操作。Cargo是一款非常实用的Java应用部署工具,支持多种应用服务器,如Tomcat、...

    java热部署工具

    6. **Maven插件**: Maven的Cargo插件也可以用于自动化JBoss的部署,包括热部署。开发者可以在构建脚本中配置Cargo,使其在编译完成后自动部署到JBoss服务器。 热部署虽然带来了便利,但也需要注意一些潜在问题,...

    cargo-core-tools-jboss-deployer-7-1.4.6.zip

    【标题】"cargo-core-tools-jboss-deployer-7-1.4.6.zip" 提供的是一款针对JBoss应用服务器的部署工具,Cargo的核心工具集。Cargo是一个强大的开源项目,它允许开发者在多种容器(如Tomcat, JBoss, Glassfish等)上...

    cargo-bundle:将rust可执行文件包装在特定于OS的应用程序包中

    货物捆绑 将Rust可执行文件包装在特定于OS的应用程序捆绑包中关于cargo-bundle是一种工具,用于为使用cargo构建的GUI可执行文件生成安装程序或应用程序捆绑包。 它可以为Mac OS X和iOS创建.app捆绑包,为Linux创建....

    Cargo一个几乎没有用户界面的浏览器

    由于其简洁的特性,Cargo 可能减少了潜在的数据追踪和第三方插件的使用,这有助于保护用户的在线隐私。同时,去除不必要的附加组件也可能降低了浏览器遭受恶意软件攻击的风险。 在"其它杂项"这个标签下,我们可以...

    领域驱动设计cargo案例

    在实现Cargo案例时,开发人员会使用面向对象的设计原则和模式,如工厂模式(创建Cargo对象)、策略模式(处理不同的运输策略)和状态模式(表示Cargo的不同状态变化)。同时,DDD还提倡使用聚合(Aggregate)来维护...

    deploy.rar

    "deploy.rar"这个压缩包提供的插件正是为了满足这一需求,它能够帮助开发者将编译成功的War或Jar包一键部署到远程应用服务器上,极大地简化了部署流程。该插件的核心技术是Cargo,一个强大的应用容器管理和部署工具...

    cargo之书

    Cargo 会下载您 Rust 的包依赖项,编译您的包,生成可分发的包,并将 它们上传到crates.io - Rust 社区的包注册表。 这是官方的翻译版,并不保证翻译的完整准确,希望能想学习rust的朋友一点儿帮助。

    基于cargo-make构建yew-todomvc

    3.启动一个命令窗口,使用cargo make build构建项目 4.使用cargo make serve启动项目 5.启动另外一个命令窗口,使用cargo make watch跟踪文件变动,自动构建项目 6. 打开浏览器,地址栏输入:http://127.0.0.1:8000...

Global site tag (gtag.js) - Google Analytics