25

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

3 に答える 3

26

私のためにフォローしてみてくださいそれは正しく動作します

        <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>
于 2014-02-18T20:53:04.103 に答える
18

コマンドラインで<systemProperties> パラメータを設定する方法はありません。

ただし、exec:javaはフォークされていないため、システムプロパティをMavenに渡すだけで、システムプロパティも取得さexec:javaれます。

mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
    -Dexec.args="arg1 arg2 arg3"
于 2010-09-14T12:39:10.267 に答える
7

私はちょうど同様の問題に遭遇しました、そして私はこの質問に出くわすかもしれない他の人のために完全な答えを書きたかったです。

質問は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

そしてそれは同じように機能するはずです。

于 2013-08-11T13:38:55.033 に答える