GoogleContainerTools / GoogleContainerTools/jib
Gradle 9.x warning: Jib task calls Task.getProject() at execution time (will fail in Gradle 10)
- Dominant language
- Java
- Stars
- 14.5k
- Forks
- 1.5k
- PR merge metrics
- No merged PRs in 30d
Description
**Environment**:
- *Jib version:* 3.5.2 (also reproduced on 3.4.5)
- *Build tool:* Gradle 9.2.1 (wrapper)
- *OS:* Debian 12 (Bookworm) GNU/Linux (Linux 6.1.0-27-amd64)
**Description of the issue**:
With Gradle 9.2.1, running Jib tasks emits:
```
Invocation of Task.project at execution time has been deprecated. This will fail with an error in Gradle 10. This API is incompatible with the configuration cache, which will become the only mode supported by Gradle in a future release. Consult the upgrading guide for further information: https://docs.gradle.org/9.2.1/userguide/upgrading_version_7.html#task_project
```
This appears to be caused by accessing `Task.getProject()` in `BuildDockerTask` (see the stacktrace excerpt below):
https://github.com/GoogleContainerTools/jib/blob/7ca8957f22dbf8390ba3abf90223a2d51f719857/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildDockerTask.java#L111
**Expected behavior**:
No deprecation warning should be raised. Jib tasks should avoid execution-time access to `Task.getProject()`.
**Steps to reproduce**:
1. create a minimal Gradle 9.2.1 wrapper project
2. add the `id 'com.google.cloud.tools.jib' version '3.5.2'` plugin
3. add a minimal jib configuration (optional)
4. run `./gradlew clean jibDockerBuild --warning-mode all --stacktrace`
**`jib-gradle-plugin` Configuration**:
```groovy
jib {
from {
image = 'gcr.io/distroless/java21-debian12'
}
to {
image = 'miniconnect/holodb'
tags = [version, 'latest']
auth {
username = findProperty('dockerHubUsername') ?: ''
password = findProperty('dockerHubPassword') ?: ''
}
}
container {
user = '65532:65532'
ports = ['3430']
args = ['/app/config.yaml']
mainClass = serverMainClass
}
}
```
**Log output**:
```
> Task :app:jibDockerBuild
Invocation of Task.project at execution time has been deprecated. This will fail with an error in Gradle 10. This API is incompatible with the configuration cache, which will become the only mode supported by Gradle in a future release. Consult the upgrading guide for further information: https://docs.gradle.org/9.2.1/userguide/upgrading_version_7.html#task_project
at org.gradle.internal.cc.impl.DeprecatedFeaturesListener.nagUserAbout(DeprecatedFeaturesListener.kt:98)
at org.gradle.internal.cc.impl.DeprecatedFeaturesListener.onProjectAccess(DeprecatedFeaturesListener.kt:70)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:581)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:551)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:84)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:70)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:408)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:393)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:67)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:408)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:393)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
at jdk.proxy1/jdk.proxy1.$Proxy96.onProjectAccess(Unknown Source)
at org.gradle.internal.cc.impl.AbstractTaskProjectAccessChecker.notifyProjectAccess(TaskExecutionAccessCheckers.kt:47)
at org.gradle.api.internal.AbstractTask.getProject(AbstractTask.java:240)
at org.gradle.api.DefaultTask.getProject(DefaultTask.java:60)
at com.google.cloud.tools.jib.gradle.BuildDockerTask.buildDocker(BuildDockerTask.java:111)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:252)
[...]
```
Contributor guide
Assessment
This issue has not been assessed yet.