在Jenkins构建时候发现这样的一般报错信息:

warning: Current JDK version 1.8.0_242-b08 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.
error: Each bind variable in the query must have a matching method parameter. Cannot find method parameters for :xMax, :yMax. - com.geostar.android.sdk.common.dao.IMediaDao.queryMedias(double, double, double, double)
error: Unused parameters: arg2,arg3 - com.geostar.android.sdk.common.dao.IMediaDao.queryMedias(double, double, double, double)
2 errors
1 warning

问题很明显了,使用Room插件的时候生成的参数被替换成arg2arg3 导致无法绑定参数信息。

项目中使用的room插件是版本是2.3.0,如果是低于这个版本的还是没有提示这一行信息的:warning: Current JDK version 1.8.0_242-b08 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.

这样提示就很明显了,Jenkins是使用docker来搭建的,那么只需要将JDK升级到11即可,可以再docker中使用JAVA_HOME的环境变量。

使用的docker-compose文件来搭建,所以只需要指定一下环境参数即可,其他的方法可以找网上参考。

指定environment环境变量

version: '3'
services:
    jenkins:
        hostname: jenkins
        container_name: jenkins
        image: jenkins/jenkins
        restart: always
        environment:
            JAVA_HOME: /var/jenkins_home/tools/jdk/jdk-11/
        ports:
            - "8080:8080"
        volumes:
            - /data/docker/jenkins/:/var/jenkins_home
        networks:
            - app_net

networks:
  app_net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.10.0.0/16