2009-07-06 13 views
166

Czy istnieje "faza" lub "cel" Mavena, aby po prostu wykonać główną metodę klasy Java? Mam projekt, który chciałbym przetestować ręcznie, po prostu robiąc coś w rodzaju "mvn run".Maven Run Project

Odpowiedz

270

Zobacz exec maven plugin. Można uruchomić klas Java przy użyciu:

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

Wywołanie może być proste jak mvn exec:java jeśli konfiguracja wtyczki jest w pom.xml. Strona wtyczki na Mojohaus ma 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 nie zrobił nic dla mnie, ale exec: exec załatwił sprawę. –

+5

Oto jak powinna wyglądać odpowiedź! referencja + prosty przykład + złożony przykład. prosty przykład zrobił mi sztuczkę (nie trzeba już konfiguracji) – codewing

+1

czy istnieje nowsza wersja tej wtyczki (nowsza niż 1.2.1?) –

0

clean package exec:java -P Class_Containing_Main_Method jest również opcja, jeśli masz tylko jedną metodę Main (PSVM) w projekcie, z następującym Maven Setup.

Nie zapomnij wspomnieć klasę w sekcji <properties></properties> z pom.xml:

<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 Configuration wraz z wyżej konfiguracji Maven:

enter image description here

+0

To nie wygląda prawo do mnie. Czy -P nie jest "profilem"? Jeśli określasz go w wierszu poleceń, dlaczego musisz umieścić go we właściwościach wtyczki? – Rup

+0

@Rup Tak, '-P' jest dla profilu. Udostępniono to, ponieważ jest to również opcja uruchomienia projektu Maven. – Abhijeet

8

Wyżej wymienione odpowiedzi są poprawne ale upraszczam go dla takich noobów jak ja. Przejdź do pliku pom w swoim projekcie. Dodaj nową właściwość exec.mainClass i podaj jej wartość jako klasę zawierającą główną metodę. Dla mnie było to DriverClass w mainpkg. Zmień go zgodnie z projektem. enter image description here

Uczyniwszy to przejdź do folderu, który zawiera uruchomić ten projekt na pom.xml iw wierszu polecenia mvn exec:java. To powinno wywołać główną metodę.

4

Nie trzeba dodawać nowej wtyczki do pom.xml. Po prostu uruchom polecenie:

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

Zobacz więcej informacji na stronie maven exec plugin.

+0

Przekaż dalsze argumenty przez '-Dexec.args =" ... arg ... "' – sstn