Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cosindering using Gradle Java toolchain to avoid Java 11 check #184

Open
StefMa opened this issue Feb 18, 2024 · 7 comments · May be fixed by #262
Open

Cosindering using Gradle Java toolchain to avoid Java 11 check #184

StefMa opened this issue Feb 18, 2024 · 7 comments · May be fixed by #262

Comments

@StefMa
Copy link
Contributor

StefMa commented Feb 18, 2024

When you add gradle Java toolchain to this project it literally doesn't matter which jvm version users (potential contributors) are using to build the project. As long as it can run gradle, the toolchain will make sure that the correct jvm version will be downloaded and used to build the project.

See https://docs.gradle.org/current/userguide/toolchains.html

There is no need for the "is Java 11 check" in the settings.gradle anymore. Additionally, also CI would use that exact same jdk version.

Idea is coming from #181

@StefMa StefMa changed the title Use Gradle Java toolchain to avoid Java check Cosindering using Gradle Java toolchain to avoid Java check Feb 18, 2024
@StefMa StefMa changed the title Cosindering using Gradle Java toolchain to avoid Java check Cosindering using Gradle Java toolchain to avoid Java 11 check Feb 18, 2024
@stackoverflow
Copy link
Contributor

This seems like a good idea. Feel free to contribute a PR if you so wish.

@holzensp
Copy link
Contributor

I thought it wasn't extended to Kotlin toolchains yet in Gradle 7 (and we're still pending the bump to >=8.6)

@StefMa
Copy link
Contributor Author

StefMa commented Feb 20, 2024

Kotlin toolchain support is available since 1.5.30. Gradle introduced the base of this feature in 6.7 or maybe 7.0 (to stable).

So I guess we are fine here.

I will try it out and report back 👍

@StefMa
Copy link
Contributor Author

StefMa commented Feb 21, 2024

So I tested a bit:
The foojay-toolchain-plugin requires at least Gradle 7.6.
So we can't use it right know until #200 is fixed and merged.

Nevertheless, I update Gradle and made the required changes.
👉 https://pastebin.com/6kJu02YV

Suddently I get a lockfile issue running ./gradlew assemble.

> Task :pkl-gradle:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pkl-gradle:compileJava'.
> Could not resolve all files for configuration ':pkl-gradle:compileClasspath'.
   > Did not resolve 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10' which is part of the dependency lock state
   > Did not resolve 'org.jetbrains.kotlin:kotlin-stdlib-common:1.7.10' which is part of the dependency lock state
   > Did not resolve 'org.jetbrains:annotations:13.0' which is part of the dependency lock state
   > Did not resolve 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10' which is part of the dependency lock state
   > Did not resolve 'com.github.ajalt.clikt:clikt-jvm:3.5.1' which is part of the dependency lock state
   > Did not resolve 'com.github.ajalt.clikt:clikt:3.5.1' which is part of the dependency lock state
   > Did not resolve 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10' which is part of the dependency lock state

I don't know where this is coming from and how to fix it 😞 .

When running ./gradlew updateDependencyLocks I get a lot of changes ❗

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   bench/gradle.lockfile
        modified:   docs/gradle.lockfile
        modified:   pkl-cli/gradle.lockfile
        modified:   pkl-codegen-java/gradle.lockfile
        modified:   pkl-codegen-kotlin/gradle.lockfile
        modified:   pkl-commons-cli/gradle.lockfile
        modified:   pkl-commons-test/gradle.lockfile
        modified:   pkl-commons/gradle.lockfile
        modified:   pkl-config-java/gradle.lockfile
        modified:   pkl-config-kotlin/gradle.lockfile
        modified:   pkl-core/gradle.lockfile
        modified:   pkl-doc/gradle.lockfile
        modified:   pkl-executor/gradle.lockfile
        modified:   pkl-gradle/gradle.lockfile
        modified:   pkl-server/gradle.lockfile
        modified:   pkl-tools/gradle.lockfile
        modified:   stdlib/gradle.lockfile

However, afterwards I get another issue 😅

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':pkl-tools:shadowJar'.
> Could not resolve all dependencies for configuration ':pkl-tools:runtimeClasspath'.
   > Resolved 'org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22' which is not part of the dependency lock state

@holzensp
Copy link
Contributor

I forget about the Kotlin stdlib intricacies for shadowJar. @stackoverflow / @bioball, thoughts?

@StefMa
Copy link
Contributor Author

StefMa commented Feb 27, 2024

Could you explain this a bit more to me? 🤔
What is the issue Iam facing I don't get it...

@stackoverflow
Copy link
Contributor

stackoverflow commented Feb 27, 2024

When you run ./gradlew updateDependencyLocks you update all dependencies, which is not what you want. You can use gradle classes --update-locks some:dependency to only update what you need. See here for more info: https://docs.gradle.org/current/userguide/dependency_locking.html#selectively_updating_lock_state_entries.

@StefMa StefMa linked a pull request Feb 28, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants