Как передать systemProperties при запуске плагина exec: java в maven? - PullRequest
19 голосов
/ 14 сентября 2010

Я хочу использовать плагин exec: java для вызова основного класса из командной строки. Я могу передать аргументы из командной строки, используя -Dexec.args="arg0 arg1 arg2", я не знаю, как передать системные свойства. Я пытался '-Dexec.systemProperties = "key = value" `, но безрезультатно.

pom.xml выглядит так:

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

Ответы [ 3 ]

21 голосов
/ 19 февраля 2014

Попробуйте для меня, это работает правильно

        <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>
15 голосов
/ 14 сентября 2010

Невозможно установить параметр <systemProperties> в командной строке.

Однако, поскольку exec:java не разветвляется, вы можете просто передать системное свойство в mavenи оно также будет забрано exec:java.

mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
    -Dexec.args="arg1 arg2 arg3"
6 голосов
/ 11 августа 2013

Я просто столкнулся с подобной проблемой, и я хотел написать полный ответ для других, которые могут столкнуться с этим вопросом.

Даже если вопрос не о pom.xml, а о командной строке - в нем не указано, как сделать то же самое с pom.xml, поэтому здесь он

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

Для командной строки - я думаю, Sean Patrick Floyd's ответ хорош - однако, если у вас уже есть что-то определенное в вашем pom.xml, оно переопределит его.

Так работает

 mvn exec:java -DmyKey=myValue

также должно работать на вас.

Вы также должны отметить, что документация exec плагина гласит следующее

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.

Так что вы также можете сделать что-то вроде этого

export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java

и он должен работать так же.

...