Скомпилировать Mvn до запуска

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

У меня есть следующее и попробовал переместить часть <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, но это тоже не сработало?

Ответ 1

Вы можете связать плагин exec с фазой, следующей за compile в построить жизненный цикл (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.

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

Ответ 2

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

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

mvn compile exec:exec

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