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

nhjlsmyf  于 2022-11-02  发布在  Maven
关注(0)|答案(5)|浏览(473)

我在命令行上使用Maven,我的构建需要一段时间才能完成(1- 2分钟)。我正在寻找一种可能性,以挂钩到构建的END,并在构建完成时触发一个特定的命令(通过ant启动一个程序,等等)-这取决于我的构建结果(成功/失败)。
我的目标是我的电脑只播放一个声音(一个是成功的构建,另一个是失败的构建),这样我就可以注意到我的构建已经完成。
我能实现这一点吗?如何实现?我想Ant是一种可能性,但我希望没有Ant我也能做到。

vmdwslir

vmdwslir1#

这应该可以让你开始。

<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>
jdzmm42g

jdzmm42g2#

这里有一个小脚本(适用于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
jljoyd4f

jljoyd4f3#

谢谢你的启发!因为我在Windows上,我用一个Batch脚本实现了它,它调用了一个小Java程序。这个程序根据给定的ErrorLevel触发一个动作(显示一个大的绿色/红色JPanel,播放声音)。
我现在调用m compile,而不是调用mvn compile
m.bat:

@echo off
call mvn %*
start javaw -cp "D:\Workspace\Java\BuildInfo\bin" BuildInfo %ERRORLEVEL%

工作完美。现在我不必再看控制台,看看我的建设是不是完成了!

szqfcxe2

szqfcxe24#

我可以想象,就像大多数优秀的命令行工具一样,the exit code在终止时从mvn返回的结果反映了构建是否成功。换句话说,当构建成功时,mvn返回1,当构建失败时,mvn返回0(您需要查看具体细节以确定)。
如果是这样的话,您可以编写一个自定义批处理/shell脚本,它只 Package mvn命令,将接收到的任何参数传递给mvn命令(这样您就可以轻松地运行mymvn compilemymvn clean deploy site)。
然后,您的自定义 Package 脚本可以调用任何必要的命令,以根据mvn的返回代码播放声音。

tsm1rwdh

tsm1rwdh5#

如果你只是想得到通知,那么https://github.com/jcgay/maven-notifier可能是你正在寻找的。

相关问题