GoogleContainerTools / GoogleContainerTools/jib

Gradle 9.x warning: Jib task calls Task.getProject() at execution time (will fail in Gradle 10)

Open
#4,468 1 comment 6 reactions 0 assignees View on GitHub
priority: p3 type:bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.