Question

Je veux utiliser le exec: plug-in Java pour appeler la classe principale de la ligne de commande. Je peux passer des arguments de la ligne de commande à l'aide -Dexec.args="arg0 arg1 arg2", je ne sais pas comment passer des propriétés du système. J'ai essayé « -Dexec.systemProperties = "key ="`, mais sans effet.

ressemble pom.xml comme ceci:

  <plugin>  
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
      <mainClass>ibis.structure.Structure</mainClass>
    </configuration>  
  </plugin>
Était-ce utile?

La solution

Il n'y a aucun moyen de définir le paramètre <systemProperties> sur la ligne de commande.

Cependant, étant donné que exec:java ne fourchue, vous pouvez simplement passer une propriété système à maven et il sera repris par exec:java ainsi.

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

Autres conseils

Essayez de suivre pour moi cela fonctionne correctement

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

Je viens de croiser un problème similaire et je voulais écrire une réponse complète pour les autres qui pourraient venir sur cette question.

Bien que la question ne concerne pas pom.xml mais de ligne de commande - il ne dit pas comment faire la même chose avec pom.xml si elle est ici

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

Pour la ligne de commande - Je pense que la réponse est bonne Sean Patrick Floyd's - cependant, si vous avez quelque chose déjà défini dans votre pom.xml il la remplacer.

Il faut donc lancer

 mvn exec:java -DmyKey=myValue

devrait également travailler pour vous.

Vous devriez également noter que les exec plugin indique ce qui suit

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.

Vous pouvez aussi faire quelque chose comme ceci

export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java

et il devrait fonctionner de la même manière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top