2010-09-14 12 views
16

Chcę użyć wtyczki exec: java, aby wywołać główną klasę z wiersza poleceń. Mogę przekazywać argumenty z wiersza poleceń za pomocą -Dexec.args="arg0 arg1 arg2", nie wiem, jak przekazać właściwości systemu. Próbowałem "-Dexec.systemProperties =" key = value "", ale bez efektu.Jak przekazać właściwości systemProperties podczas wywoływania exec: java plugin in maven?

pom.xml wygląda następująco:

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

Odpowiedz

11

Nie ma sposobu, aby ustawić <systemProperties>parameter w wierszu poleceń.

Ponieważ jednak exec:java nie jest rozwidlony, można po prostu przekazać właściwość systemową do urządzenia maven i zostanie ono odebrane również przez exec:java.

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

myślałem -Dexec.args jest dla argumentów przekazanych do głównej klasy. – Alexandru

+0

tak, myliłem się. przepraszam, zaktualizowałem swoją odpowiedź. '' i '' oba robią dokładnie to samo wewnętrznie. –

+2

To nie działa dla mnie :( –

6

po prostu wpadł na podobny problem i chciałem napisać pełną odpowiedź na inne, które mogą zetknąć się z tym pytaniem.

Nawet nie chodzi o to o pom.xml ale o linii poleceń - nie, w jaki sposób zrobić to samo z pom.xml tak tutaj jest

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

Dla linii poleceń - myślę Sean Patrick Floyd's odpowiedź jest dobra - jednak jeśli masz już coś zdefiniowanego w twoim pom.xml, to go zastąpisz.

Tak działa

mvn exec:java -DmyKey=myValue 

powinien również pracować dla Ciebie.

Należy również pamiętać, że exec plugin's documentations stany następujące

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. 

Więc można też zrobić coś takiego

export MAVEN_OPTS=-DmyKey=myValue 
mvn exec:java 

i powinien działać w ten sam sposób.

20

spróbuj wykonać dla mnie to działa prawidłowo

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