Передача командной строки Парамс в mvn exec: exec
Я поражен, что то, что должно было быть очень легкой работой, превращается в очень раздражающую задачу для меня. Все, что мне нужно, это передать несколько параметров командной строки в мой плагин 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 должен работать для меня. Может кто-нибудь подсказать, пожалуйста, где я иду не так?
Ответы
Ответ 1
Мне удалось заставить аргументы 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>
Ответ 2
Два способа передать аргументы командной строки в 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
Удачи.
Ответ 3
почему бы не использовать системное свойство?
<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>
Ответ 4
Если вы хотите передать аргументы командной строки в Java VM, используйте <commandlineArgs>
вместо <arguments>
. Плагин Maven Exec
Приветствия
Ответ 5
Я использую следующий параметр командной строки, чтобы передать аргументы моему Main-Class с плагином exceution.
mvn clean install -Dexec.arguments="arg0"
Ответ 6
Проблема в том, что вы используете -Dexec.args
в командной строке, и он переопределяет <arguments>
приведенный в pom.xml
. Вы можете использовать любой из них, а не оба.
Ответ 7
Я не думаю, что выбранный ответ решает проблему. Вот мое несколько хакерское решение, которое работает:
<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:[email protected] -DmyProperty1=XXX -DmyProperty2=YYY