wake-up-neo.com

Kommandozeile übergeben Params in mvn exec: exec

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

29
deckingraj

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

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.

23
codemule

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

Wenn Sie Befehlszeilenargumente an Java VM übergeben möchten, verwenden Sie <commandlineArgs>-Tag anstelle von <arguments>. Maven Exec Plugin

Prost

1
Oliver Kocsis

Ich verwende die folgende Befehlszeileneinstellung, um mit dem Ausführungs-Plugin Argumente an meine Hauptklasse zu übergeben.

mvn clean install -Dexec.arguments="arg0"
0
geri-m

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

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.

0
Oliv