2013-08-21 3 views
10

Я пытаюсь настроить свой POM таким образом, что когда я сделаю mvn exec:exec или mvn exec:java, он сначала скомпилирует исходный код и, если он будет успешным, выполните его.Mvn compile before exec

У меня есть следующий и попытались переместить <execution> часть о, но не может заставить его работать:

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

Когда я либо mvn exec:exec ... или mvn exec:java это не первый компилировать. Я попытался положить часть <execution> в раздел плагина exec, но это тоже не сработало?

+0

Почему бы не запустить компилятор: компилировать перед вашим exec: exec/exec: java? –

+2

@ Elad Я продолжаю забывать компилировать, а затем путаться, почему ничего не изменилось. – Lerp

+0

@Lerp Если вы столкнулись с той же проблемой, нашли ли вы решение? – Yaroslav

ответ

1

Вы можете связать EXEC плагин к фазе следующего compile в build lifecycle (verify в примере ниже):

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

и чем запустить mvn verify.

Я вижу ответ очень поздно, и вы, возможно, нашли решение. Я просто оставляю ссылку для других, кому это может понадобиться.

+3

Спасибо за это, но если я правильно понимая, что OP пытается выполнить компиляцию во время [прямого] выполнения 'mvn exec: [exec | java]' и ** not ** как части «нормального» цикла сборки Maven. Чтобы уточнить, они, как я, хотят, чтобы код был создан первым, когда мы запускаем «mvn exec», но делаем ** не ** хотите, чтобы «exec» запускался во время нормальных циклов/фаз сборки Maven. –

0

Это старая тема, но кто-то может быть заинтересован в альтернативном решении для этого.

Это не совсем то, что вы искали, но вы можете скомпилировать и выполнить с помощью одной команды:

mvn compile exec:exec 

Этот путь Maven всегда будет компилировать проект перед его выполнением.

Смежные вопросы