Передать параметры командной строки в mvn exec: exec - PullRequest
29 голосов
/ 22 марта 2011

Я поражен, что то, что должно было быть очень легкой работой, превращается в очень раздражающую задачу для меня. Все, что мне нужно, это передать несколько параметров командной строки в мой плагин maven exec: exec. к сожалению, часы поиска в Google не помогли вообще.

Вот мой плагин

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-instrument</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-classpath</argument>
            <classpath />
            <argument>-javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar</argument>
            <argument>-Xmx256m</argument>
            <argument>com.myPackage.Myclass</argument>
        </arguments>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Теперь из командной строки я набираю:

mvn exec:exec -Dexec.args=-Dmy.property=myProperty

Я тоже пробовал:

mvn exec:exec -Dexec.arguments=-Dmy.property=myProperty

и многое другое. Однако, похоже, ничего не работает. Я знаю, что exec: exec работает в отдельной виртуальной машине, но согласно документации -Dexec.args должен работать для меня. Может кто-нибудь подсказать, пожалуйста, где я не так?

Ответы [ 7 ]

24 голосов
/ 15 мая 2014

Два способа передачи аргументов командной строки в mvn: exec:

Метод 1, в командной строке:

mvn exec:java -Dexec.mainClass="com.myPackage.myClass" -Dexec.args="command line arguments"

Метод 2, в файле POM maven:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <configuration>
        <mainClass>com.myPackage.myClass</mainClass>
        <commandlineArgs>command line arguments</commandlineArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

Затем в командной строке все, что вам нужно сделать, это запустить:

mvn exec:java

Удачи.

19 голосов
/ 26 сентября 2012

Мне удалось заставить JVM-аргументы работать для exec: exec, используя следующее после прочтения этой статьи :

    <build>
      <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>java</executable>
                <arguments>
                    <argument>-Dhttp.proxyHost=myproxy.example.com</argument>
                    <argument>-Dhttp.proxyPort=8080</argument>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>com.example.Main</argument>
                </arguments>
            </configuration>
        </plugin>
      </plugins>
    </build>
4 голосов
/ 01 ноября 2014

почему бы не использовать системное свойство?

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>bobo.Abc</mainClass>
                  <arguments>
                        <argument>argument1</argument>
                    </arguments>
                    <systemProperties>
                        <systemProperty>
                            <key>jvmProperty1</key>
                            <value>dev</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
1 голос
/ 23 марта 2011

Если вы хотите передать аргументы командной строки в Java VM, используйте тег <commandlineArgs> вместо <arguments>. Плагин Maven Exec

Приветствия

0 голосов
/ 03 июля 2019

Я не думаю, что выбранный ответ решает проблему.Вот мое несколько хакерское решение, которое работает:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-instrument</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-classpath</argument>
            <classpath />
            <argument>-Xmx256m</argument>
            <argument>com.myPackage.Myclass</argument>
            <argument>${myProperty1}</argument> <!-- variable args here!!! -->
            <argument>${myProperty2}</argument>

        </arguments>
    </configuration>
    <executions>
        <execution>
            <id>myExecution</id> <!-- defined an id here! -->
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Теперь вы можете просто выполнить передачу аргументов.

mvn exec:exec@myExecution -DmyProperty1=XXX -DmyProperty2=YYY
0 голосов
/ 06 марта 2019

Проблема в том, что вы используете -Dexec.args в командной строке, и оно переопределяет <arguments>, указанное в pom.xml.Вы можете использовать любой из них, а не оба.

0 голосов
/ 30 июня 2013

Я использую следующую настройку командной строки для передачи аргументов в мой основной класс с плагином исключений.

mvn clean install -Dexec.arguments="arg0"
...