问题:开发人员收到邮件提示jenkins自动编译报错,但经过测试在开发人员本地myeclipse编译没有问题(jenkins使用的ant版本为1.9.7)。ant日志报错如下:
[javac] /root/.jenkins/workspace/manager_test/src/com/rondi/mvno/service/XMHttpsRetOrderService.java:48: incompatible types
[javac] found : java.lang.Object
[javac] required: com.rondi.mvno.vo.RetOrderResult
[javac] RetOrderResult result = super.post(clazz, path, body, headers);
查询父类post代码:
protected <T> T post(Class<T> clazz, String path, String body, Map<String, String> headers) {
CloseableHttpClient closeableHttpClient = null;
try {
这里是一个泛型方法。
问题解决:如果在ant配置文件build.xml中没有下面一行
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
ant将使用javac compiler,原来这个编译器就是编译不了泛型,改为使用eclipse的jdt compiler后问题解决。需要在ant的lib库加入以下的jar包:
jdtCompilerAdapter.jar
org.eclipse.jdt.compiler.tool_1.0.100.v_B61.jar
org.eclipse.jdt.core_3.7.0.v_B61.jar
org.eclipse.jdt.debug.ui_3.6.0.v20110512.jar