Maven2:货运插件热部署和Jonas支持

ree*_*eef 5 maven-2 cargo maven-cargo

我试图在我的Maven项目中使用Cargo插件,以便从针对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>
Run Code Online (Sandbox Code Playgroud)

当我跑步时

mvn cargo:deploy
Run Code Online (Sandbox Code Playgroud)

在我的项目中,战争已复制到Jonas webapps文件夹,但没有热部署。仅复制文件,但不调用hot deploy Jonas命令,因此无法立即使用我的修改。

编辑:我也尝试按照答案中的建议添加部署程序配置,但行为是相同的(即:复制了war,但未调用Jonas hot deploy命令,以便不会在Jonas中重新加载war)。

我是否缺少某些信息?或者我说的是Cargo Maven插件不支持Jonas Hot Deployement吗?

提前致谢!

Ric*_*ler 1

有关部署到正在运行的容器的货物页面链接到一个,该表列出了为该容器引入热部署的版本。根据该表,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>
Run Code Online (Sandbox Code Playgroud)

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