2009-07-06 17 views
166

Gibt es eine Maven "Phase" oder "Ziel", um einfach die Hauptmethode einer Java-Klasse auszuführen? Ich habe ein Projekt, das ich manuell testen möchte, indem ich einfach etwas wie "mvn run" mache.Maven Run Projekt

Antwort

270

Siehe exec maven plugin. Sie können Java-Klassen laufen mit:

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ... 

Der Aufruf ein einfaches wie mvn exec:java sein kann, wenn die Plugin-Konfiguration in Ihrem pom.xml ist. Die Plugin-Seite auf Mojohaus hat eine more detailed example.

<project> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>com.example.Main</mainClass> 
        <arguments> 
         <argument>argument1</argument> 
        </arguments> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

exec: Java hat nichts für mich getan, aber exec: exec hat den Trick gemacht. –

+5

So sollte eine Antwort aussehen! Referenz + einfaches Beispiel + komplexes Beispiel. das einfache Beispiel hat den Trick für mich (keine Konfiguration mehr benötigt) – codewing

+1

gibt es eine neuere Version dieses Plugins (neuer als 1.2.1?) –

0

clean package exec:java -P Class_Containing_Main_Method Befehl ist auch eine Option, wenn Sie nur eine Methode Main (PSVM) in dem Projekt, mit dem folgenden Maven-Setup haben.

Vergessen Sie nicht, die Klasse im <properties></properties> Abschnitt pom.xml zu erwähnen:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.main.class>com.test.service.MainTester</java.main.class> 
</properties> 

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
      <mainClass>${java.main.class}</mainClass> 
     </configuration> 
</plugin> 

STS Run-Konfiguration zusammen mit über Maven Setup:

enter image description here

+0

Das sieht nicht aus direkt zu mir. Ist nicht -P für "Profil"? Wenn Sie es in der Befehlszeile angeben, warum müssen Sie es in die Eigenschaften des Plugins einfügen? – Rup

+0

@Rup Ja, '-P' ist für Profil. Teilen Sie dies, da es auch eine Option zum Ausführen von Maven-Projekt ist. – Abhijeet

8

Die oben genannten Antworten sind richtig aber ich vereinfache es für Anfänger wie mich.Gehen Sie auf die Pom-Datei Ihres Projekts. Fügen Sie eine neue Eigenschaft exec.mainClass hinzu und geben Sie ihren Wert als die Klasse an, die Ihre Hauptmethode enthält. Für mich war es DriverClass in mainpkg. Ändern Sie es gemäß Ihrem Projekt. enter image description here

Nachdem diese zu dem Ordner getan, dass Ihr Projekt enthält pom.xml und diese mvn exec:java an der Eingabeaufforderung ausführen. Dies sollte die Hauptmethode aufrufen.

4

Keine Notwendigkeit, neues Plugin in pom.xml hinzuzufügen. Führen Sie einfach diesen Befehl aus

mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)' 

Siehe maven exec plugin für mehr Verwendung.

+0

Übergeben Sie weitere Argumente über '-Dexecs.args =" ... arg ... "' – sstn