2013-08-21 12 views
10

Ich versuche, mein POM so einzurichten, dass, wenn ich mvn exec:exec oder tun wird es zunächst die Quelle kompilieren und wenn erfolgreich, führen Sie es aus.Mvn kompilieren vor exec

Ich habe folgende und hat versucht, über den <execution> Teil bewegt, aber es funktioniert nicht bekommen kann:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>exec</phase> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <mainClass>my.main.class</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Wenn ich entweder mvn exec:exec ... oder mvn exec:java es nicht erst kompilieren. Ich habe versucht, die <execution> Teil in den exec Plugin-Abschnitt setzen, aber das hat auch nicht funktioniert?

+0

Warum nicht "compiler: compile" vor Ihrem exec ausführen: exec/exec: java? –

+2

@Elad Ich vergesse immer zu kompilieren und dann verwirrt zu werden, warum sich nichts geändert hat. – Lerp

+0

@Lerp Haben Sie vor dem gleichen Problem eine Lösung gefunden? – Yaroslav

Antwort

1

Sie können die exec-Plugin auf eine Phase binden folgende compile in build lifecycle (verify im Beispiel unten):

<profile> 
    <id>proxy</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <executions> 
        <execution> 
         <phase>verify</phase> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
         <configuration> 
          <mainClass>my.main.class</mainClass> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

und als mvn verify laufen.

Ich sehe die Antwort ist sehr spät und Sie haben möglicherweise eine Lösung gefunden. Ich gehe nur als Referenz für andere, die es brauchen können.

+3

Danke dafür, aber wenn ich bin Wenn das OP richtig verstanden wird, versucht es während der [direkten] Ausführung von 'mvn exec: [exec | java]' und ** not ** als Teil eines 'normalen' Maven-Build-Zyklus 'kompiliert zu werden. Um klarzustellen, wollen sie, wie ich, dass der Code zuerst erstellt wird, wenn wir "mvn exec" ausführen, aber nicht wollen, dass "exec" während normaler Maven-Build-Zyklen/-Phasen ausgeführt wird. –

0

Es ist ein altes Thema, aber jemand anderes könnte sich für eine alternative Lösung dafür interessieren.

Es ist nicht genau das, was Sie suchen, aber Sie können mit einem einzigen Befehl kompilieren und ausführen:

mvn compile exec:exec 

Auf diese Weise Maven wird das Projekt vor der Ausführung immer kompilieren.