Maven2:Cargo 插件热部署 & Jonas 支持

Posted

技术标签:

【中文标题】Maven2:Cargo 插件热部署 & Jonas 支持【英文标题】:Maven2: Cargo plugin hot deployment & Jonas support 【发布时间】:2010-11-26 12:49:52 【问题描述】:

我正在尝试让 Cargo 插件在我的 maven 项目上运行,以便从针对 Jonas 服务器的战争热部署中受益。

官方文档并不清楚支持什么和不支持什么(例如你可以找到这个:http://cargo.codehaus.org/Hot+Deployment,也可以找到这个http://cargo.codehaus.org/JOnAS+4.x)。

无论如何,我的战争 POM 有以下配置:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <container>
            <containerId>jonas4x</containerId>
            <home>C:\JOnAS-4.8.4\nt\bin</home>
        </container>

        <configuration>
            <type>existing</type>
            <home>C:\JOnAS-4.8.4</home>
        </configuration>
    </configuration>
</plugin>

当我跑步时

mvn cargo:deploy

在我的项目中,war 被复制到 Jonas webapps 文件夹中,但没有热部署。该文件仅被复制,但未调用热部署 Jonas 命令,因此我的修改无法立即使用。

编辑:我还尝试按照答案中的建议添加部署器配置,但行为是相同的(即:复制了战争,但未调用 Jonas 热部署命令,因此不会在 Jonas 中重新加载战争)。

我是不是遗漏了什么,还是说 Cargo Maven 插件不支持 Jonas Hot Deployement 是对的?

提前致谢!

【问题讨论】:

根据定义,没有一个软件,它更像是服务而不是好,是清楚的。软件是绝对 0 或 1 二进制,清除意味着 3,如直接数学或经典逻辑 @LarsOn:对不起,我不明白你的评论......甚至句子...... @reef:我在 jboss 而不是 Jonas 上遇到了类似的问题,你能得到一些线索吗? 【参考方案1】:

deploying to a running container 上的货物页面链接到 table,列出了为该容器引入热部署的版本。根据表格,JOnAS 4.x 从版本 1.0(您正在使用)开始支持,所以它应该可以工作。

在该页面上,它还提供了一些配置插件以进行部署的指南,我试图在下面解释它们。

从您的配置中的home 元素,我假设您正在尝试进行本地部署。运行容器页面中的配置意味着在最后这一行中热部署应该是自动的:

只需输入 mvn cargo:deploy。请注意,我们没有指定一个元素,也没有指定一个。这是因为该插件足够聪明,可以为您创建默认实例。很酷,不是吗?

但是前面的配置块表明您应该配置deployer 部分以使货物插件知道要部署的战争。部署者的配置是这样的:

<deployer>
  <type>local</type>
  <deployables>
    <deployable>
      <groupId>$project.groupId</groupId>
      <artifactId>$project.artifactId</artifactId>
      <type>war</type>
      <properties>
        <context>optional root context</context>
      </properties>
      <pingURL>optional url to ping to know if deployable is done or not</pingURL>
      <pingTimeout>optional timeout to ping (default 20000 milliseconds)</pingTimeout>
    </deployable>
  </deployables>
</deployer>

如果自动选项不适合您,请考虑为您的战争声明配置。

【讨论】:

感谢您的回答。我在配置中添加了部署程序部分,它没有改变任何东西。实际上问题是我的战争被复制到了好的乔纳斯目录,但似乎插件没有调用热部署乔纳斯命令(jonas admin -a my_war)。所以我复制了我的战争,但没有正确地热部署。 那个解决方案对我有帮助,很抱歉它没有解决你原来的问题。

以上是关于Maven2:Cargo 插件热部署 & Jonas 支持的主要内容,如果未能解决你的问题,请参考以下文章

使用 cargo 插件在 payara 上部署

如何使用 Cargo maven 插件远程部署 EAR 到 JBoss 5.1.0.GA?

IntelliJ + Maven + 内Jetty 实现热部署项目

无法使用 cargo-maven-plugin 重新部署到远程 tomcat 7

如何将文件夹添加到由 maven cargo 插件启动的 Tomcat 容器的类路径中

热部署简介及在eclipse安装插件JRebel进行热部署