2010-09-14 12 views
16

Ich möchte mit dem exec: java-Plugin die Hauptklasse von der Befehlszeile aufrufen. Ich kann Argumente von der Befehlszeile mit -Dexec.args="arg0 arg1 arg2" übergeben, ich weiß nicht, wie Systemeigenschaften übergeben werden. Ich habe versucht '-Dexec.systemProperties = "key = value" `aber ohne Wirkung.Wie SystemProperties beim Aufruf von exec übergeben: Java-Plugin in Maven?

pom.xml sieht wie folgt aus:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <configuration> 
     <mainClass>ibis.structure.Structure</mainClass> 
    </configuration> 
    </plugin> 

Antwort

11

Es gibt keine Möglichkeit, die <systemProperties>parameter auf der Kommandozeile.

Da jedoch exec:java nicht gegabelt ist, können Sie einfach eine Systemeigenschaft an Maven übergeben und sie wird auch von exec:java übernommen.

+0

ich -Dexec.args dachte funktioniert, ist für Argumente an die Haupt-Klasse übergeben. – Alexandru

+0

Ja, ich habe mich geirrt. Entschuldigung, ich habe meine Antwort aktualisiert. '' und '' machen beide intern ziemlich dasselbe. –

+2

Dies funktioniert nicht für mich :( –

6

Ich stieß gerade auf ein ähnliches Problem und ich wollte eine vollständige Antwort für andere schreiben, die auf diese Frage stoßen könnten.

Auch wenn die Frage nicht über pom.xml ist aber über Kommandozeile - es gibt nicht an, wie das gleiche so mit pom.xml zu tun, hier ist es

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 

       <goals> 
        <goal>java</goal> 
       </goals> 

       <configuration> 
        <mainClass>myPackage.MyMain</mainClass> 
         <systemProperties> 
          <property> 
           <key>myKey</key> 
           <value>myValue</value> 
          </property> 
         </systemProperties> 
       </configuration> 

      </plugin> 
     </plugins> 
    </build> 

Für die Kommandozeile - ich glaube, Sean Patrick Floyd's Antwort ist gut - jedoch, wenn Sie etwas bereits in Ihrer pom.xml definiert haben, wird es überschrieben. So

läuft

mvn exec:java -DmyKey=myValue 

sollte auch für Sie arbeiten.

Sie sollten auch beachten, dass die exec plugin's documentations Staaten die folgende

A list of system properties to be passed. 
Note: as the execution is not forked, some system properties required 
by the JVM cannot be passed here. 
Use MAVEN_OPTS or the exec:exec instead. See the user guide for more information. 

So kann man auch so etwas wie dieses

export MAVEN_OPTS=-DmyKey=myValue 
mvn exec:java 

tun, und es sollte die gleiche Art und Weise arbeiten.

20

versuchen, für mich folgende es richtig

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <configuration> 
       <mainClass>ibis.structure.Structure</mainClass> 
       <systemProperties> 
        <systemProperty> 
         <key>someKey</key> 
         <value>someValue</value> 
        </systemProperty> 
       </systemProperties> 
      </configuration> 
     </plugin> 
Verwandte Themen