我在命令行上使用Maven,我的构建需要一段时间才能完成(1-2分钟)。 我正在寻找一种可能挂钩到构建的END并在构建完成时触发特定命令(由ant等启动程序) - 依赖于我的构建结果(成功/失败)。 / p>
我的目标是我的计算机只播放声音(一个用于成功构建,另一个用于失败的构建),所以我会注意到我的构建完成了。
我能意识到这一点,以及如何实现? 我想Ant是可能的,但我希望我也可以在没有Ant的情况下做到。
答案 0 :(得分:10)
这应该让你开始。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
File soundFile = new File("audio/beep.wav");
AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);
DataLine.Info info = new DataLine.Info(Clip.class,sound.getFormat());
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(sound);
clip.start();
sleep(5000);
</source>
</configuration>
</execution>
</executions>
</plugin>
你会想要这个Maven存储库。
<repository>
<id>org.codehaus.repository</id>
<name>Codehaus repository</name>
<url>http://repo1.maven.org/maven2/org/codehaus/mojo/</url>
</repository>
答案 1 :(得分:5)
这是一个小脚本(对于Windows)我们的一些开发用途,它只是改变cmd提示符的bg颜色,再次使用退出代码。
@echo off
color 07
call mvn %*
IF ERRORLEVEL 1 goto RedBuild
IF ERRORLEVEL 0 goto GreenBuild
:RedBuild
color 4F
goto TheEnd
:GreenBuild
color 2F
:TheEnd
答案 2 :(得分:1)
感谢发人深省的冲动! 当我在Windows上时,我用Batch脚本实现了它,它调用了一个小程序。该程序根据给定的ErrorLevel触发一个动作(显示一个大的绿色/红色JPanel,播放声音)。
我现在拨打mvn compile
m compile
等
m.bat:
@echo off
call mvn %*
start javaw -cp "D:\Workspace\Java\BuildInfo\bin" BuildInfo %ERRORLEVEL%
完美的作品。现在我不用再看控制台了,看看我的构建是否完成了!
答案 3 :(得分:0)
我认为像大多数优秀的命令行工具一样,mvn
在终止时返回the exit code反映了构建是否成功。换句话说,mvn
在构建成功时返回1,在失败时返回0(您需要查找详细信息以确定)。
如果是这样,您可以编写一个自定义批处理/ shell脚本,它只包装mvn
命令,将收到的任何参数传递给mvn
命令(这样您就可以运行mymvn compile
和mymvn clean deploy site
一样容易)。
然后,您的自定义包装器脚本可以根据mvn
的返回代码调用播放声音所需的任何命令。