/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ def resources = scriptResources(buildscript) configure(rootProject) { ext { // also change this in extractor tool: ExtractForeignAPI vectorIncubatorJavaVersions = [ JavaVersion.VERSION_20, JavaVersion.VERSION_21, JavaVersion.VERSION_22 ] as Set } } configure(project(":lucene:core")) { ext { apijars = layout.projectDirectory.dir("src/generated/jdk") mrjarJavaVersions = [ 19, 20, 21 ] } configurations { apiextractor } dependencies { apiextractor "org.ow2.asm:asm:${scriptDepVersions['asm']}" } mrjarJavaVersions.each { jdkVersion -> def task = tasks.create(name: "generateJdkApiJar${jdkVersion}", type: JavaExec) { description "Regenerate the API-only JAR file with public Panama Foreign & Vector API from JDK ${jdkVersion}" group "generation" javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(jdkVersion) } onlyIf { try { javaLauncher.get() return true } catch (Exception e) { logger.warn('Launcher for Java {} is not available; skipping regeneration of Panama Foreign & Vector API JAR.', jdkVersion) logger.warn('Error: {}', e.cause?.message) logger.warn("Please make sure to point env 'JAVA{}_HOME' to exactly JDK version {} or enable Gradle toolchain auto-download.", jdkVersion, jdkVersion) return false } } classpath = configurations.apiextractor mainClass = file("${resources}/ExtractJdkApis.java") as String systemProperties = [ 'user.timezone': 'UTC', 'file.encoding': 'UTF-8', ] args = [ jdkVersion, apijars.file("jdk${jdkVersion}.apijar"), ] } regenerate.dependsOn task } }