在exec之前编译Mvn

时间:2013-08-21 08:24:32

标签: maven compilation exec phase

我正在尝试设置我的POM,这样当我执行mvn exec:execmvn 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插件部分,但这也不起作用?

2 个答案:

答案 0 :(得分:2)

您可以将exec插件绑定到build lifecyclecompile后面的阶段(以下示例中为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 总是在执行之前编译项目。