詹金斯建立没有失败

时间:2014-11-24 19:59:44

标签: java maven jenkins

我想知道什么可以让Jenkins忽略编译错误,并以成功的状态完成工作?

我们正在使用Jenkins v1.590和Maven 1.0.2(目前没有选择)和SVN。我们的项目是一个Web应用程序,它被细分为5个Maven模块。 4个产生jar的Java模块/项目和1个产生战争的模块。

以下是一个编译错误的示例,该错误应该在构建战争时失败:

C:\DevTools\workspace-Jenkins\xxxxx_Construction_du_War_3_18_x\src\main\java\com\.....\servlet\command\compte\RemboursementAnnuler.java:54: annulerReglement(com.........base.ReglementBean,java.lang.String,com.........securite.BusinessUtilisateurBean) in com......transaction.compte.Compte cannot be applied to (com......base.ReglementBean,com.......metier.securite.BusinessUtilisateurBean)
                : new Compte().annulerReglement(reglementBean, businessUtilisateurBean);
                                  ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors

BUILD FAILED
File...... C:\.maven\cache\maven-java-plugin-1.5\plugin.jelly
Element... ant:javac
Line...... 63
Column.... 48
Compile failed; see the compiler error output for details.
Total time: 33 seconds
Finished at: Mon Nov 24 18:54:39 CET 2014

Finished: SUCCESS

为什么詹金斯无法发现自己​​的失败?可能是Maven 1的退出代码吗?

我尝试了一个构建jar的项目,这也是同样的问题。

有任何线索吗?

先谢谢你。

[编辑]我的解决方案: 受到 @Jigar Joshi 的建议的启发,我刚刚通过调用maven clean ...的简单批处理命令替换了Maven构建步骤(因为对于Maven 1,默认情况下命令名为{{1} },而不是maven)。我已经在每个模块/作业中完成了这一点,现在每个编译错误都被正确报告为构建失败。问题实际上是Maven命令的返回码。

在能够将mvn调用到作业之前,我必须将Maven 1.0.2安装到经典位置(例如maven.bat),将c:\DevTools\maven-1.0.2环境变量设置为指向在该位置,还添加了MAVEN_HOME%MAVEN_HOME%\bin环境变量。然后我重新启动机器让Jenkins考虑到所有这些,现在一切都很好。

1 个答案:

答案 0 :(得分:1)

这可能是jenkins maven插件的问题,我宁愿设置自由式jenkins项目并直接从bash调用mvn,这样退出状态就不会成为问题