我想知道什么可以让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考虑到所有这些,现在一切都很好。
答案 0 :(得分:1)
这可能是jenkins maven插件的问题,我宁愿设置自由式jenkins项目并直接从bash调用mvn
,这样退出状态就不会成为问题