问题:开发人员收到邮件提示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