Piotr Olaszewski
06/30/2024, 8:21 PM> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve com.example:gradle-convention-plugin:0.0.11.
Required by:
project : > com.example.spotless-conventions:com.example.spotless-conventions.gradle.plugin:0.0.11
> Dependency requires at least JVM runtime version 21. This build uses a Java 17 JVM.
This is how the project looks like:
.
āāā build.gradle
āāā gradle
ā āāā wrapper
ā āāā gradle-wrapper.jar
ā āāā gradle-wrapper.properties
āāā gradlew
āāā settings.gradle
āāā src
āāā main
ā āāā groovy
ā ā āāā com.example.spotless-conventions.gradle
ā āāā resources
āāā test
āāā resources
build.gradle
plugins {
id 'groovy-gradle-plugin'
id 'maven-publish'
// When updating, update below in dependencies too
id 'com.diffplug.spotless' version '6.25.0'
}
group = 'com.example'
dependencies {
implementation 'com.diffplug.spotless:spotless-plugin-gradle:6.25.0'
}
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("<https://maven.pkg.github.com/example/gradle-convention-plugin>")
credentials {
username = 'xxx'
password = 'xxx'
}
}
}
}
repositories {
gradlePluginPortal()
}
com.example.spotless-conventions.gradle
plugins {
id 'com.diffplug.spotless'
}
spotless {
java {
target 'src/**/*.java'
palantirJavaFormat('2.47.0')
importOrder('', 'java', '\\#')
removeUnusedImports()
}
}
and when I apply a ./gradlew spotlessApply everything goes well, the problem is when I add, to the consumer project a com.github.tjni.captainhook:captain-hook:0.1.5 plugin and try call:
apply plugin: 'com.github.tjni.captainhook'
captainHook {
preCommit = './gradlew spotlessApply --stacktrace'
}
The mentioned error occur.
Any thoughts?Chris Lee
06/30/2024, 8:23 PMPiotr Olaszewski
06/30/2024, 8:25 PMjava -version
openjdk version "21.0.2" 2024-01-16 LTS
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode, sharing)
Also in the consumer project:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
But how and where to set in the convention plugin?Piotr Olaszewski
06/30/2024, 8:28 PMCould not resolve com.example:gradle-convention-plugin:0.0.11.Chris Lee
06/30/2024, 8:29 PMAaron Ferguson
06/30/2024, 9:57 PMPiotr Olaszewski
07/01/2024, 6:44 AMVampire
07/01/2024, 6:52 AMPiotr Olaszewski
07/01/2024, 6:52 AMcom.github.tjni.captainhook to the convention plugin, and in the com.thulium.spotless-conventions.gradle file have following:
apply plugin: 'com.github.tjni.captainhook'
captainHook {
preCommit = './gradlew spotlessApply --status'
}
When the hook is called I receive:
pre-commit > ./gradlew spotlessApply
Starting a Gradle Daemon, 2 incompatible and 6 stopped Daemons could not be reused, use --status for details
And the Java 17 is used:
/usr/lib/jvm/java-17-openjdk-amd64/bin/javaVampire
07/01/2024, 6:54 AMVampire
07/01/2024, 6:54 AM./gradlew --version, you will see which Java is usedVampire
07/01/2024, 6:55 AMVampire
07/01/2024, 6:56 AMPiotr Olaszewski
07/01/2024, 7:10 AM09:03 $ ./gradlew --version
------------------------------------------------------------
Gradle 8.8
------------------------------------------------------------
Build time: 2024-05-31 21:46:56 UTC
Revision: 4bd1b3d3fc3f31db5a26eecb416a165b8cc36082
Kotlin: 1.9.22
Groovy: 3.0.21
Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM: 21.0.2 (Eclipse Adoptium 21.0.2+13-LTS)
OS: Linux 6.5.0-41-generic amd64
However, what's weird is that when I run com.github.tjni.captainhook in the consumer, it works. But when I move it to the plugin, it runs /usr/lib/jvm/java-17-openjdk-amd64/bin/java, and I don't understand why.Vampire
07/01/2024, 10:10 AM--scan URL of the failure?Piotr Olaszewski
07/01/2024, 10:52 AMbuild.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.tjni.captainhook:captain-hook:0.1.5'
}
}
plugins {
id 'groovy-gradle-plugin'
id 'maven-publish'
// When updating, update below in dependencies too
id 'com.diffplug.spotless' version '6.25.0'
}
group = 'com.thulium'
apply plugin: 'com.github.tjni.captainhook'
captainHook {
autoApplyGitHooks = false
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
dependencies {
implementation 'com.diffplug.spotless:spotless-plugin-gradle:6.25.0'
implementation 'com.github.tjni.captainhook:captain-hook:0.1.5'
}
publishing {
repositories {
mavenLocal()
}
}
repositories {
gradlePluginPortal()
}
com.thulium.spotless-conventions.gradle
plugins {
id 'com.diffplug.spotless'
}
plugins.apply('com.github.tjni.captainhook')
captainHook {
autoApplyGitHooks = true
preCommit = './gradlew spotlessApply'
}
spotless {
java {
target 'src/**/*.java'
palantirJavaFormat('2.47.0')
importOrder('', 'java', '\\#')
removeUnusedImports()
}
}
CONSUMER:
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
}
}
rootProject.name = 'demo'
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5'
id 'com.thulium.spotless-conventions' version '0.0.11'
}
group = 'com.example'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
When I trying to commit (githook is registered)
pre-commit > ./gradlew spotlessApply
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'demo'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve com.thulium:gradle-convention-plugin:0.0.11.
Required by:
project : > com.thulium.spotless-conventions:com.thulium.spotless-conventions.gradle.plugin:0.0.11
> Dependency requires at least JVM runtime version 21. This build uses a Java 17 JVM.
Scan URL: https://scans.gradle.com/s/23aplptzfbikiPiotr Olaszewski
07/01/2024, 10:58 AMcom.github.tjni.captainhookPiotr Olaszewski
07/01/2024, 10:58 AMVampire
07/01/2024, 11:00 AM--scan is not with that failure and thus uselessPiotr Olaszewski
07/01/2024, 12:04 PMPiotr Olaszewski
07/01/2024, 12:06 PMVampire
07/01/2024, 12:10 PMPiotr Olaszewski
07/01/2024, 12:16 PMVampire
07/01/2024, 12:18 PMVampire
07/01/2024, 12:19 PMPiotr Olaszewski
07/01/2024, 12:34 PMcaptainHook {
autoApplyGitHooks = true
preCommit = 'JAVA_HOME="$HOME/.sdkman/candidates/java/current" ./gradlew spotlessApply'
}Piotr Olaszewski
07/01/2024, 12:35 PMVampire
07/01/2024, 12:42 PMJAVA_HOME in .bashrc or .bash_profile and when the hook is run, it might well be that it runs in a different environment where those effects are not present. But that is a question for Git, not Gradle. š