Domanda

Voglio usare l'exec: java plugin per richiamare la classe principale da linea di comando. Posso passare gli argomenti dalla riga di comando utilizzando -Dexec.args="arg0 arg1 arg2", non so come passare le proprietà del sistema. Ho provato '-Dexec.systemProperties = "chiave = valore" `, ma senza alcun effetto.

sguardi pom.xml come questo:

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

Soluzione

Non v'è alcun modo per impostare il <systemProperties> parametro sulla riga di comando.

Tuttavia, poiché exec:java non è biforcuta, si può semplicemente passare una proprietà di sistema per Maven e sarà preso da exec:java pure.

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

Altri suggerimenti

Prova segue per me funziona correttamente

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

Ho appena incontrato un problema simile e ho voluto scrivere una risposta completa per gli altri che potrebbero venire attraverso questa domanda.

Anche se la questione non riguarda pom.xml ma su linea di comando - non indica come fare la stessa cosa con pom.xml ecco che è

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

Per la linea di comando - Penso risposta Sean Patrick Floyd's è buono - tuttavia, se avete qualcosa di già definito nel pom.xml avrà la precedenza esso.

Quindi, in esecuzione

 mvn exec:java -DmyKey=myValue

dovrebbe funzionare anche per voi.

Si dovrebbe anche notare che il exec del plugin documentazione afferma il seguente

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.

Così si può anche fare qualcosa di simile

export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java

e dovrebbe funzionare allo stesso modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top