Skip to content

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

@davidsusu

Description

@davidsusu

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):

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:

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)
        [...]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions