Maven:Build完成时触发自定义命令,取决于结果(成功/失败)

时间:2010-06-04 11:52:29

标签: java maven-2 maven

我在命令行上使用Maven,我的构建需要一段时间才能完成(1-2分钟)。 我正在寻找一种可能挂钩到构建的END并在构建完成时触发特定命令(由ant等启动程序) - 依赖于我的构建结果(成功/失败)。 / p>

我的目标是我的计算机只播放声音(一个用于成功构建,另一个用于失败的构建),所以我会注意到我的构建完成了。

我能意识到这一点,以及如何实现? 我想Ant是可能的,但我希望我也可以在没有Ant的情况下做到。

4 个答案:

答案 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 compilemymvn clean deploy site一样容易)。

然后,您的自定义包装器脚本可以根据mvn的返回代码调用播放声音所需的任何命令。