为了创建我的应用程序的配置,我需要运行bash脚本。 是否有可能在Maven中集成bash脚本的执行,也许有一些插件? 感谢。
答案 0 :(得分:18)
Bash Maven Plugin可以帮到你吗? (免责声明:我发起了,所以请给我反馈意见)
<build>
<plugins>
<plugin>
<!-- Run with:
mvn bash:run
mvn install
-->
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>bash-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<id>test</id>
<phase>integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<script>
# Here you can execute shell commands
echo "Tomcat will start"
/opt/apache-tomcat/bin/startup.sh
</script>
</configuration>
</plugin>
</plugins>
</build>
您需要在自己的Maven仓库中安装此maven插件。
与Konstantin一样:当你执行shell脚本时,你就不再可移植了。
答案 1 :(得分:13)
你可以这样做,见答案:
I want to execute shell commands from maven's pom.xml
但这不可取,因为这不会产生可移植的版本。为什么你首先需要这个?使用这个插件通常表明项目构建中有一些奇怪的必要性
答案 2 :(得分:4)
看起来更像是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>generateSources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<exec executable="/bin/bash">
<arg value="myFirst.sh" />
<arg value="inputOne" />
</exec>
<exec executable="/bin/bash">
<arg value="src/mySecond.sh" />
<arg value="inputTwo" />
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
使用myFirst.sh:
echo "call to myFirst.sh, message ${1}"
答案 3 :(得分:2)
解决。问题是,可执行文件以不同的方式用于bash。这段代码正在运行。将其写在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>
答案 4 :(得分:1)
如果可能的话,我建议使用在JVM中运行的脚本语言,其中包含在项目或maven存储库中捕获的依赖项。这样,您的构建是独立于平台的,并且您的依赖项被捕获(即,您不会松开构建计算机并实现您的bash脚本特定于该框)。我在使用jacl的this post中展示了一个示例。在antrun中使用javascript和groovy也有很好的例子(尽管可能有更简单的方法直接调用它们。)
答案 5 :(得分:0)
要试验命令,您可以使用exec:exec
:
$ mvn exec:exec -q -Dexec.executable=echo -Dexec.args="your arguments"
your arguments
$ mvn exec:exec -q -Dexec.executable=echo -Dexec.args="'your arguments'"
your arguments
这表明:
-q
关闭mvn日志