iamsanjay commented on PR #2682:
URL: https://github.com/apache/solr/pull/2682#issuecomment-2404936521
The toolchain cannot be set at the JavaCompile level. Because we are using
different Jdk for main and test package. To set at project level, below is the
config. But this fails!
```
allprojects {
plugins.withType(JavaPlugin) {
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
}
}
```
Next, we have different toolchain for the tasks. And below is the way to
configure different toolchain for compileJava and compileTestJava.
```
tasks.withType(JavaCompile) {
compileTestJava {
javaCompiler = javaToolchains.compilerFor {
languageVersion =
JavaLanguageVersion.of(JavaVersion.toVersion(scriptDepVersions['min-java-version']).toString())
}
options.compilerArgs += ["--release",
JavaVersion.toVersion(scriptDepVersions['min-java-version']).toString()]
}
compileJava {
javaCompiler = javaToolchains.compilerFor {
languageVersion =
JavaLanguageVersion.of(project.minJavaVersion.toString())
}
options.compilerArgs += ["--release",
project.minJavaVersion.toString()]
}
}
```
This works! I ran with `./gradlew :solr:api:build --info` and I can see
different toolchain being loaded
```
Task ':solr:api:compileJava' is not up-to-date because:
Output property 'destinationDirectory' file
/Users/sanjaydutt/Documents/solr/solr/api/build/classes/java/main has been
removed.
Output property 'destinationDirectory' file
/Users/sanjaydutt/Documents/solr/solr/api/build/classes/java/main/org has been
removed.
Output property 'destinationDirectory' file
/Users/sanjaydutt/Documents/solr/solr/api/build/classes/java/main/org/apache
has been removed.
Output property 'options.generatedSourceOutputDirectory' file
/Users/sanjaydutt/Documents/solr/solr/api/build/generated/sources/annotationProcessor/java/main
has been re
moved.
The input changes require a full rebuild for incremental task
':solr:api:compileJava'.
Full recompilation is required because no incremental change information is
available. This is usually caused by clean builds or changing compiler
arguments.
Compiling with toolchain
'/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home'.
Compiling with JDK Java compiler API.
Class dependency analysis for incremental compilation took 0.003 secs.
Created classpath snapshot for incremental compilation in 0.0 secs.
work action resolve main (project :solr:api) (Thread[#760,Execution worker
Thread 3,5,main]) started.
Resolve mutations for :solr:api:processResources (Thread[#760,Execution
worker Thread 3,5,main]) started.
> Task :solr:api:compileTestJava
Caching disabled for task ':solr:api:compileTestJava' because:
Build cache is disabled
Task ':solr:api:compileTestJava' is not up-to-date because:
Task has failed previously.
The input changes require a full rebuild for incremental task
':solr:api:compileTestJava'.
Full recompilation is required because no incremental change information is
available. This is usually caused by clean builds or changing compiler
arguments.
Compiling with toolchain
'/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home'.
Compiling with JDK Java compiler API.
Class dependency analysis for incremental compilation took 0.0 secs.
Created classpath snapshot for incremental compilation in 0.003 secs.
Resolve mutations for :solr:api:analyzeTestClassesDependencies
(Thread[#757,included builds,5,main]) started.
```
#### However, jar task is still, I think ,running with whatever java_home is
Because whenever I open MANIFEST.MF, Build-JDK is 21. I mean we are
successfully able to compile files using jdk 17, however whenever jar task is
running it's running via 21.
```
Specification-Title: Apache Solr Search Server: api
X-Compile-Source-JDK: 17
X-Compile-Target-JDK: 17
X-Build-JDK: (21.0.3)
X-Build-OS: Mac OS X aarch64 14.3
```
I try to add the toolchain config to `jar-manifest.gradle`, but it's not
working
```
doFirst {
def toolchain = javaToolchains.compilerFor {
languageVersion =
JavaLanguageVersion.of(project.minJavaVersion.toString())
}
}
manifest {
attributes([
"Extension-Name" : implementationTitle,
"Implementation-Vendor" : "The Apache Software
Foundation",
"Implementation-Title" : implementationTitle,
"Implementation-Version": implementationVersion,
"Specification-Vendor" : "The Apache Software
Foundation",
"Specification-Version" : project.baseVersion,
"Specification-Title" : title,
// Evaluate these properties lazily so that the
defaults are applied properly.
"X-Compile-Source-JDK" : "${->
project.sourceCompatibility}",
"X-Compile-Target-JDK" : "${->
project.targetCompatibility}",
"X-Build-JDK" :
"${System.properties['java.version']} (${System.properties['java.vendor']}
${System.properties['java.vm.version']})",
"X-Build-OS" :
"${System.properties['os.name']} ${System.properties['os.arch']}
${System.properties['os.version']}"
])
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]