我想从maven的pom.xml执行shell命令

我想用maven执行linux shell命令。 这是我试过的:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>hostname</executable> </configuration> </plugin> 

这是为我工作的东西:

 <plugin> <artifactId>exec-maven-plugin</artifactId> <groupId>org.codehaus.mojo</groupId> <executions> <execution><!-- Run our version calculation script --> <id>Version Calculation</id> <phase>generate-sources</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>${basedir}/scripts/calculate-version.sh</executable> </configuration> </execution> </executions> </plugin> 

这里的问题是我不知道预期的是什么。 使用你当前的设置,在命令行上调用插件就行了:

 $ mvn exec:exec
 [INFO]扫描项目...
 [INFO] ----------------------------------------------- -------------------------
 [INFO]大厦Q3491937
 [INFO]任务段:[exec:exec]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [exec:exec {execution:default-cli}]
 [INFO]笔记本电脑
 [INFO] ----------------------------------------------- -------------------------
 [信息]build立成功
 [INFO] ----------------------------------------------- -------------------------
 ...

使用全局configuration ,执行hostname命令( laptop是我的主机名)。 换句话说,插件按预期工作。

现在,如果你想要一个插件作为构build的一部分被执行,你必须绑定一个特定阶段的目标。 例如,要在compile绑定它:

  <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <id>some-execution</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>hostname</executable> </configuration> </plugin> 

接着:

 $ mvn编译
 [INFO]扫描项目...
 [INFO] ----------------------------------------------- -------------------------
 [INFO]大厦Q3491937
 [INFO]任务段:[编译]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [resources:resources {execution:default-resources}]
 [INFO]使用“UTF-8”编码来复制过滤的资源。
 [INFO]跳过不存在的资源目录/ home / pascal / Projects / Q3491937 / src / main / resources
 [INFO] [编译器:编译{执行:默认编译}]
 [INFO]什么都不能编译 - 所有的类都是最新的
 [INFO] [exec:exec {execution:some-execution}]
 [INFO]笔记本电脑
 [INFO] ----------------------------------------------- -------------------------
 [信息]build立成功
 [INFO] ----------------------------------------------- -------------------------
 ...

请注意,您可以在execution指定configuration

解决了。 问题是,可执行文件在Linux中以不同的方式工作。 如果你想运行.sh文件,你应该写下面的方式。 把它写在pom.xml中

  <plugin> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <groupId>org.codehaus.mojo</groupId> <executions> <execution><!-- Run our version calculation script --> <id>Renaming build artifacts</id> <phase>package</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>bash</executable> <commandlineArgs>handleResultJars.sh</commandlineArgs> </configuration> </execution> </executions> </plugin>