From 63f800ab6447a9ed45f09e872317afb7abf48822 Mon Sep 17 00:00:00 2001 From: Nicolas Peters Date: Sat, 27 Apr 2024 14:59:40 +0200 Subject: [PATCH] gradle config for multi compilation 21< and 21 --- palantir-java-format/build.gradle | 90 +++++++++++++++++-- .../java/java21/Java21InputAstVisitor.java | 31 +++++++ 2 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 palantir-java-format/src/main/java/com/palantir/javaformat/java/java21/Java21InputAstVisitor.java diff --git a/palantir-java-format/build.gradle b/palantir-java-format/build.gradle index bef1b8918..9f03725a5 100644 --- a/palantir-java-format/build.gradle +++ b/palantir-java-format/build.gradle @@ -42,17 +42,95 @@ def exports = [ def jvmArgList = exports.collect { value -> "--add-exports=${value}=ALL-UNNAMED".toString() } -tasks.withType(JavaCompile).configureEach { - options.errorprone.disable 'StrictUnusedVariable' +//register compileJava21 on the same source code +tasks.register("compileJava21", JavaCompile) { + javaCompiler = javaToolchains.compilerFor { + languageVersion = JavaLanguageVersion.of(21) + } - // Allow access to internal javac apis - options.compilerArgs += jvmArgList + source(sourceSets["main"].java) + classpath = sourceSets["main"].compileClasspath + destinationDirectory.set(sourceSets["main"].java.destinationDirectory) - if (JavaVersion.current() < JavaVersion.VERSION_14) { - excludes = ['**/Java14InputAstVisitor.java'] +} + +tasks.register("compileTestJava21", JavaCompile) { + javaCompiler = javaToolchains.compilerFor { + languageVersion = JavaLanguageVersion.of(21) } + + source(sourceSets["test-21"].java) + classpath = sourceSets["test-21"].compileClasspath + destinationDirectory.set(sourceSets["test-21"].java.destinationDirectory) + +} + +sourceSets { + main { + java { + srcDirs = ['src/main/java'] + } + resources { + srcDirs = ['src/main/resources'] + } + } + test { + java { + srcDirs = ['src/test/java'] + } + resources { + srcDirs = ['src/test/resources'] + } + } + + 'test-21' { + java { + srcDirs = ['src/test-21/java'] + } + resources { + srcDirs = ['src/test-21/resources'] + } + } + } + +tasks.named("classes") { + dependsOn("compileJava21") +} + +tasks.named("testClasses") { + dependsOn("compileTestJava21") +} + +tasks.withType(JavaCompile).configureEach { + config -> + { + + def currentLanguageVersion = config.javaCompiler.get().getMetadata().languageVersion.asInt() + println("JavaCompile name:" + config.name + " version:" + currentLanguageVersion) + + + options.errorprone.disable 'StrictUnusedVariable' + + // Allow access to internal javac apis + options.compilerArgs += jvmArgList + + if (currentLanguageVersion < 14) { + excludes = ['**/java14/*.java', '**/java21/*.java'] + } + if (14< currentLanguageVersion && currentLanguageVersion < 21) { + excludes = ['**/java21/*.java'] + } + + if (21 <= currentLanguageVersion ) { + includes = ['**/java/java21/*.java'] + excludes = ['**/java/JavaInputAstVisitor.java'] + } + } +} + + tasks.withType(Test).configureEach { jvmArgs = jvmArgList } diff --git a/palantir-java-format/src/main/java/com/palantir/javaformat/java/java21/Java21InputAstVisitor.java b/palantir-java-format/src/main/java/com/palantir/javaformat/java/java21/Java21InputAstVisitor.java new file mode 100644 index 000000000..af75688c6 --- /dev/null +++ b/palantir-java-format/src/main/java/com/palantir/javaformat/java/java21/Java21InputAstVisitor.java @@ -0,0 +1,31 @@ +/* + * (c) Copyright 2024 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.javaformat.java.java21; + +public class Java21InputAstVisitor { + + public static void main(String[] args) { + + Thread.startVirtualThread(() -> { + try { + Thread.sleep(1000); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } +}