2016-07-14 18 views
0

Ich habe ein Maven-Projekt, das ein bestehendes Elternprojekt erweitert (Es ist das "Standardprodukt", aus dem mein Produkt ein "Kundenspezifisches Produkt" wird).Erweitern maven cargo plugins jvmargs

Das übergeordnete Element deklariert ein org.codehaus.cargo/cargo-maven2-plugin und übergibt es einige VM Args unter configuration/cargo.jvmargs. Wie folgt aus:

<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> 

Jetzt in meiner benutzerdefinierten Projekt, möchte ich diese Jvm args erweitern mit einem weiteren Argument (wir -ArgD sagen), so dass die args sind -ArgA -ArgB -ArgC -ArgD. Ich möchte nicht das gesamte Plugin überschreiben, nur um diese kleine Änderung zu machen.

Ich weiß, dass ich dies angeben kann: cargo:run -Dcargo.jvmargs="-ArgD" aber das Problem hier ist: Alle anderen Args (ArgA, ArgB, ArgC) werden überschrieben/entfernt, nur ArgD bleibt. Was ich brauche ist etwas wie cargo:run -Dcargo.jvmargs="current_cargo.jvmargs + -ArgD".

Ist das irgendwie möglich?

Antwort

1

Die sauberste Möglichkeit wäre, jvmargs in Eltern Pom zu Maven Property zu bewegen. Dann könnten Sie in Ihrem benutzerdefinierten Projekt jvmargs mit maven-Eigenschaft mit Ihren benutzerdefinierten Werten kombinieren. Zum Beispiel:

Eltern 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> 

Ihre individuelle 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> 

Wenn es keine Möglichkeit, Eltern ändern ist Pom können Sie Fracht Eigenschaft cargo.start.jvmargs (siehe this page) verwenden. Diese Eigenschaft fügt dem Container beim Start Java-Argumente hinzu.

+0

Jungs, wir haben einen Gewinner! Danke, der 'cargo.start.jvmargs' macht genau das, was ich brauche. Meine bereits gesetzten Argumente werden beibehalten und meine neuen Argumente werden nachgestellt. Perfekt. – BAER