Created
February 11, 2026 00:39
-
-
Save jonatan-ivanov/3159bee14b961eb33c7da3ea9cd43e58 to your computer and use it in GitHub Desktop.
"local" toolchains
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # $HOME/.gradle/jdks | |
| # https://api.foojay.io/swagger-ui/ | |
| # https://api.foojay.io/disco/v3.0/packages?version=25&distribution=liberica&architecture=aarch64&archive_type=tar.gz&package_type=jdk&operating_system=macos&javafx_bundled=false | |
| toolchains.local.JDK23.AARCH64.MAC_OS=https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-macos-aarch64.tar.gz | |
| toolchains.local.JDK25.AARCH64.MAC_OS=https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-macos-aarch64.tar.gz |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| rootProject.name = 'gradle-test' | |
| public abstract class LocalJavaToolchainResolver implements JavaToolchainResolver { | |
| private static final Logger logger = Logging.getLogger(LocalJavaToolchainResolver.class) | |
| public java.util.Optional<JavaToolchainDownload> resolve(JavaToolchainRequest request) { | |
| String key = getKey(request) | |
| String uri = loadLocalToolChainProperties()[key] | |
| logger.quiet("Resolved Toolchain: $key -> $uri") | |
| return java.util.Optional.ofNullable(uri).collect{ JavaToolchainDownload.fromUri(new URI(it)) } | |
| } | |
| private String getKey(JavaToolchainRequest request) { | |
| String version = request.javaToolchainSpec.languageVersion.get() | |
| String arch = request.buildPlatform.architecture | |
| String os = request.buildPlatform.operatingSystem | |
| return "toolchains.local.JDK${version}.${arch}.${os}" | |
| } | |
| private Map loadLocalToolChainProperties() { | |
| Properties gradleProperties = new Properties() | |
| new File('gradle.properties').withInputStream { gradleProperties.load(it) } | |
| return gradleProperties.findAll { it.key.startsWith('toolchains.local.') } | |
| } | |
| } | |
| public abstract class LocalJavaToolchainResolverPlugin implements Plugin<Settings> { | |
| @Inject | |
| protected abstract JavaToolchainResolverRegistry getToolchainResolverRegistry(); | |
| public void apply(Settings settings) { | |
| settings.getPluginManager().apply("jvm-toolchain-management") | |
| getToolchainResolverRegistry().register(LocalJavaToolchainResolver.class) | |
| } | |
| } | |
| apply plugin: LocalJavaToolchainResolverPlugin | |
| toolchainManagement { | |
| jvm { | |
| javaRepositories { | |
| repository('local') { resolverClass = LocalJavaToolchainResolver } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment