扩展 maven cargo 插件 jvmargs

Posted

技术标签:

【中文标题】扩展 maven cargo 插件 jvmargs【英文标题】:Extend maven cargo plugins jvmargs 【发布时间】:2016-11-17 11:00:42 【问题描述】:

我有一个扩展现有父项目的 maven 项目(它是“标准产品”,我的产品将成为“定制产品”)。

父级声明org.codehaus.cargo / cargo-maven2-plugin 并在configuration / cargo.jvmargs 下传递一些VM args。像这样:

    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <version>1.4.18</version>
      <configuration>
        <container>
          <containerId>tomcat8x</containerId>
          [...]
          <dependencies>
            [...]
          </dependencies>
        </container>
        <configuration>
          <properties>
            <cargo.jvmargs>-ArgA -ArgB -ArgC</cargo.jvmargs>
          </properties>
          <configfiles>
            [...]
          </configfiles>
          <files>
            [...]
          </files>
        </configuration>
      </configuration>
    </plugin>

现在在我的自定义项目中,我想用另外一个参数(比如说 -ArgD)扩展这些 jvm 参数,以便参数是 -ArgA -ArgB -ArgC -ArgD。我不想仅仅为了做这个小小的改变而覆盖整个插件。

我知道我可以指定这个:cargo:run -Dcargo.jvmargs="-ArgD",但这里的问题是:所有其他参数(ArgA、ArgB、ArgC)都被覆盖/删除,只有 ArgD 会保留。我需要的是cargo:run -Dcargo.jvmargs="current_cargo.jvmargs + -ArgD" 之类的东西。

这有可能吗?

【问题讨论】:

【参考方案1】:

最干净的可能性是将父 pom 中的 jvmargs 移动到 maven 属性。然后在您的自定义项目中,您将能够使用 maven 属性将 jvmargs 与您的自定义值结合起来。例如:

父 pom:

<properties>
    <cargo.base.jvmargs>-ArgA -ArgB -ArgC</cargo.base.jvmargs>
</properties>
[...]
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <version>1.5.0</version>
  <configuration>
      [...]
    <configuration>
      <properties>
        <cargo.jvmargs>$cargo.base.jvmargs</cargo.jvmargs>
      </properties>
        [...]
    </configuration>
  </configuration>
</plugin>

您的自定义 pom:

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
      [...]
    <configuration>
      <properties>
        <cargo.jvmargs>$cargo.base.jvmargs -ArgD</cargo.jvmargs>
      </properties>
        [...]
    </configuration>
  </configuration>
</plugin>

如果无法修改父 pom,您可以使用 Cargo 属性 cargo.start.jvmargs(请参阅 this page)。此属性在容器启动时向容器添加 java 参数。

【讨论】:

伙计们,我们赢了!谢谢,cargo.start.jvmargs 正是我需要的。我已经设置的参数被保留,我的新参数被放在后面。完美。

以上是关于扩展 maven cargo 插件 jvmargs的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Jetty 的 Maven Cargo 插件指定 jetty-env.xml 文件?

Cargo maven 插件 - 启动目标忽略配置,“运行”工作正常

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

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

使用 cargo 插件在 payara 上部署

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