Ich bin erstaunt, dass eine sehr leichte Aufgabe zu einer sehr nervigen Aufgabe für mich geworden ist. Ich brauche nur wenige Befehlszeilenparameter an mein Maven exec: exec plugin. leider haben stundenlanges googeln überhaupt nicht geholfen.
Hier ist mein Plugin
<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>
jetzt mit dem Befehl Prompt tippe ich ein
mvn exec:exec -Dexec.args=-Dmy.property=myProperty
Ich habe es auch versucht
mvn exec:exec -Dexec.arguments=-Dmy.property=myProperty
und viele andere Sachen. Nichts scheint jedoch zu funktionieren. Ich weiß, dass exec: exec in einem separaten VM ausgeführt wird, aber laut Dokumentation sollte -Dexec.args für mich funktionieren. Kann jemand bitte vorschlagen, wo ich falsch liege ???
Ich konnte JVM-Args für exec: exec einsetzen, nachdem sie diesen Artikel gelesen hatte:
<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>
Es gibt zwei Möglichkeiten, Befehlszeilenargumente an mvn zu übergeben: exec:
Methode 1 in der Befehlszeile:
mvn exec:Java -Dexec.mainClass="com.myPackage.myClass" -Dexec.args="command line arguments"
Methode 2 in der Maven-POM-Datei:
<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>
Dann müssen Sie in der Befehlszeile nur Folgendes ausführen:
mvn exec:Java
Viel Glück.
warum nicht die Systemeigenschaft verwenden?
<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>
Wenn Sie Befehlszeilenargumente an Java VM übergeben möchten, verwenden Sie <commandlineArgs>
-Tag anstelle von <arguments>
. Maven Exec Plugin
Prost
Ich verwende die folgende Befehlszeileneinstellung, um mit dem Ausführungs-Plugin Argumente an meine Hauptklasse zu übergeben.
mvn clean install -Dexec.arguments="arg0"
Ich denke nicht, dass die ausgewählte Antwort das Problem löst. Hier ist meine etwas hackige Lösung, die funktioniert:
<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>
Jetzt können Sie einfach die Argumente übergeben.
mvn exec:[email protected] -DmyProperty1=XXX -DmyProperty2=YYY
Das Problem ist, dass Sie -Dexec.args
in der Befehlszeile und es überschreibt die <arguments>
angegeben in pom.xml
. Sie können einen von beiden verwenden, nicht beide.