我正在尝试设置我的POM,这样当我执行mvn exec:exec
或mvn exec:java
时,它将首先编译源,如果成功,则执行它。
我有以下内容并试图移动<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 :(得分:2)
您可以将exec插件绑定到build lifecycle中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
。
我看到答案很晚,你可能已经找到了解决方案。 我只是留下作为其他可能需要它的人的参考。
答案 1 :(得分:1)
这是一个古老的话题,但其他人可能会对替代解决方案感兴趣。
它并不完全是您要找的,但您可以使用一个命令进行编译和执行:
mvn compile exec:exec
这样 Maven 总是在执行之前编译项目。