2013-11-28 59 views
1

我试图使Maven的Exec插件运行多个执行当调用下面的方式exec:java目标多次执行:但是在使用Maven 3.1.1我运行mvn exec:java的Maven Exec插件不工作

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <executions> 
       <execution> 
        <id>first</id> 
        <goals> 
         <goal>java</goal> 
        </goals> 
        <configuration> 
         <mainClass>com.example.First</mainClass> 
        </configuration> 
       </execution> 
       <execution> 
        <id>second</id> 
        <goals> 
         <goal>java</goal> 
        </goals> 
        <configuration> 
         <mainClass>com.example.Second</mainClass> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

收到错误消息:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project test: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java are missing or invalid -> [Help 1] 

运行exec:java目标为单次执行(不使用嵌套executions元素)按预期工作。

回答

2

在我看来,问题是<execution/>都没有绑定到特定的<phase/>。尝试设置一个。

+0

如果我用“exec:java”明确地执行插件,哪一个阶段应该是? – sakra

+0

那么,如果你指定的'mainClass'是模块源代码的一部分,那么你需要首先编译代码,所以最低限度是编译,尽管我会推荐'package'运行测试。有关可能阶段的详细列表,请查看:http://maven.apache.org/ref/3.1.1/maven-core/lifecycles.html,以及http://maven.apache.org/guides/introduction/介绍到的,lifecycle.html。也许问题是,当你想运行exec目标时,这些类还没有被编译......? – carlspring

+0

另外我注意到,maven-exec-plugin不支持'java'目标的多个扩展。更多信息在这里:http://stackoverflow.com/questions/22562558/the-maven-exec-plugin-executes-only-first-execution – victor