FtcRobotController icon indicating copy to clipboard operation
FtcRobotController copied to clipboard

Consider supporting cross-compilation from newer JDKs without warnings

Open merscwog opened this issue 4 years ago • 4 comments

Attempt to compile using JDK 13 or higher complains with:

warning: [options] source value 7 is obsolete and will be removed in a future release warning: [options] target value 7 is obsolete and will be removed in a future release warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.

And to make matters even more annoying, it happens for 4-tasks, so you get 12 total warnings every time you build.

Installing an ancient Java 7 JDK is one option, or not using anything newer than a Java 11 JDK for cross-compilation is another, but many systems are switching to installing JDK 13 as the default, and the below code snippet allows newer cross-compilation JDKs without emitting the annoying warnings, yet keeps everything else functionally equivalent:

build.gradle (top-level one, in the allprojects {} section)

    // Avoid warning message from newer JDKs about Java 7 source/target being obsolete
    tasks.withType(JavaCompile).whenTaskAdded { JavaCompile javaCompile ->
        javaCompile.options.compilerArgs << '-Xlint:-options'
    }

The snippet directly replaced in the build.gradle file can be seen here: https://github.com/FIRST-Tech-Challenge/FtcRobotController/pull/11/files

merscwog avatar Sep 28 '20 12:09 merscwog