题
我要运行一个简单的行政命令后家安装阶段。什么是最简单的方式可以实现这一目标?(没有增加新的插件)
解决方案
如果你想作为正常构建生命周期的一部分运行此命令,没有其他方式比在exec
相结合的install
目标:
<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,那么你就必须通过惠利的建议,以显式调用exec:exec
在命令行上install
后。
其他提示
该专家默认的生命周期结束 安装 和 部署 目标中没有前后的版本的这些目标。
潜在的选择将是:
绑定exec:exec mojo要与部署阶段。我要警告你对这想法作为部署阶段将是真正意味着要部署项目到远程专家库。
运行exec:exec魔之后安装的目标在你会为了寻求简便援引...例如:
会为了寻求简便清理安装exec:exec-Dexec.可执行="yourcommand"-Dexec.arg="参数"
如果你有一个多模块项目,创造另一个模块结束时的你 <modules> 和绑exec:exec到的任何通常的目标,在这一模块。这会迫使这种特殊的模块,以运行最后的其他假设 标准的反应看 不到满足。一个共同的战略,我采用与家项目,我的工作是"有疑问时,另外创建一个模块"。
不隶属于 StackOverflow