2010-01-05 24 views

回答

13

如果你想作为正常构建生命周期的一部分运行此命令,没有其他方式比在install相结合的exec目标:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.1.1</version> 
     <executions> 
     <execution> 
      <id>my-exec</id> 
      <phase>install</phase> 
      <goals> 
      <goal>exec</goal> 
      </goals> 
      <inherited>false</inherited> 
     </execution> 
     </executions> 
     <configuration> 
     <executable>COMMAND</executable> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

我使用做了一个简单的测试上述(使用ls为“COMMAND”)与新创建的行家项目和运行mvn install配置产生以下输出:

 
$ mvn install 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building maven-exec-testcase 
[INFO] task-segment: [install] 
[INFO] ------------------------------------------------------------------------ 
... 
[INFO] [install:install {execution: default-install}] 
[INFO] Installing /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar to /home/pascal/.m2/repository/com/mycompany/app/maven-exec-testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar 
[INFO] [exec:exec {execution: my-exec}] 
[INFO] pom.xml 
[INFO] src 
[INFO] target 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12 seconds 
[INFO] Finished at: Tue Jan 05 19:26:04 CET 2010 
[INFO] Final Memory: 11M/75M 
[INFO] ------------------------------------------------------------------------ 

正如我们所看到的,该命令在install阶段的末尾(在将工件复制到本地存储库之后)执行

如果您确实不想将代码段添加到您的pom中,那么您必须在whaley建议的命令行上明确呼叫exec:execinstall

3

Maven的默认的生命周期与结束安装部署目标 - 有这些目标没有之前和之后的版本。

潜在的选择将是:

  • 绑定高管:EXEC魔力与部署阶段。由于部署阶段实际上是为了将工件部署到远程Maven存储库,所以我会警告您不要这样做。

  • 运行exec:EXEC魔力在MVN调用安装进球后...如:

    MVN全新安装前高管:EXEC -Dexec.executable = “yourcommand” -Dexec.args = “论据”

  • 如果您有多模块项目,请在<模块>的末尾创建另一个模块,并将exec:exec绑定到该模块中的任何常用目标。这将迫使这个特定的模块最后运行,假设不符合其他criteria the reactor looks at。我所使用的Maven项目的一个常见策略是“如果有疑问,请创建另一个模块”。

相关问题