Frage

Ich möchte die exec verwenden: Java-Plugin die Hauptklasse von der Kommandozeile aufzurufen. Ich kann Argumente aus der Kommandozeile übergeben -Dexec.args="arg0 arg1 arg2" mit, ich weiß nicht, wie Systemeigenschaften zu übergeben. Ich habe versucht, ‚-Dexec.systemProperties = "key = value"`, aber ohne Wirkung.

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>
War es hilfreich?

Lösung

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

Da jedoch exec:java nicht gegabelt ist, können Sie nur eine Systemeigenschaft Maven passieren, und es wird auch von exec:java abgeholt werden.

mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
    -Dexec.args="arg1 arg2 arg3"

Andere Tipps

Versuchen Sie, für mich folgende es funktioniert

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

Ich lief in ein ähnliches Problem, und ich wollte eine vollständige Antwort für andere schreiben, die sich über diese Frage kommen könnten.

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

    <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 Befehlszeile - ich glaube, Sean Patrick Floyd's Antwort ist gut - aber wenn Sie etwas haben, bereits in Ihrem pom.xml definiert wird es außer Kraft setzen.

So läuft

 mvn exec:java -DmyKey=myValue

sollte auch für Sie arbeiten.

Sie sollten auch beachten, dass die exec Plugins Dokumentationen gibt 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 können Sie auch etwas tun

export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java

, und es soll die gleiche Art und Weise arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top