2013-08-21 16 views
10

Próbuję skonfigurować mój POM tak, że kiedy zrobię mvn exec:exec lub mvn exec:java najpierw skompiluje źródło i iff udanie, wykonaj to.Kompilacja Mvn przed exec

Mam następujący i próbowali przesuwając <execution> część o, ale nie może zmusić go do pracy:

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

Kiedy ja albo mvn exec:exec ... lub mvn exec:java to nie pierwsza kompilacja. Próbowałem wstawianie części <execution> w sekcji wtyczki exec, ale to też nie działało?

+0

Dlaczego nie uruchomić "kompilator: kompilacja" przed swoim exec: exec/exec: java? –

+2

@ Ele, ciągle zapominam o kompilacji, a potem dezorientuję się, dlaczego nic się nie zmieniło. – Lerp

+0

@Lerp Wobec tego samego problemu, znalazłeś rozwiązanie? – Yaroslav

Odpowiedz

1

Można powiązać plugin exec do fazy następującej compile w build lifecycle (verify w poniższym przykładzie):

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

i niż uruchomić mvn verify.

Widzę, że odpowiedź jest bardzo późna i możliwe, że znalazłeś rozwiązanie. Po prostu zostawiam jako punkt odniesienia dla innych, którzy mogą tego potrzebować.

+3

Dzięki za to, ale jeśli jestem zrozumienie poprawnie, OP próbuje kompilować podczas wykonywania [bezpośredniego] 'mvn exec: [exec | java]' i ** nie ** jako część 'normalnego' cyklu budowania Mavena. Aby wyjaśnić, oni, tak jak ja, chcą, aby kod został zbudowany najpierw, gdy uruchamiamy 'mvn exec', ale ** nie ** chcemy, aby 'exec' działał podczas normalnych cykli/faz budowania Mavena. –

0

To stary temat, ale ktoś inny może być zainteresowany alternatywnym rozwiązaniem tego problemu.

To nie jest dokładnie to, czego szukaliśmy, ale można skompilować i uruchomić za pomocą jednego polecenia:

mvn compile exec:exec 

ten sposób Maven zawsze skompilować projekt przed wykonaniem go.