gpt4 book ai didi

java - 如何在某些情况下跳过 bmuschko/gradle-docker-plugin 引入的 gradle 任务?

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:50 25 4
gpt4 key购买 nike

我使用gradle插件bmuschko/gradle-docker-plugin将 docker 与 gradle 集成。我在 build.gradle 文件中创建一些任务:

    task copyJar(type: Copy) {
dependsOn build

from project.file("$project.buildDir/libs/" << jarName)
into project.file("$project.buildDir/docker")
}

task createDockerfile(type: Dockerfile) {
dependsOn copyJar

// Generate Dockerfile
}

task buildDockerImage(type: DockerBuildImage) {
dependsOn createDockerfile

inputDir = createDockerfile.destFile.parentFile
tag = 'example.com/' << jar.baseName
if (project.hasProperty('imageTag')) {
tag += ':' << imageTag
}
}
task pushDockerImage(type: DockerPushImage) {
dependsOn buildDockerImage
conventionMapping.imageName = { 'example.com/' + jar.baseName }
if (project.hasProperty('imageTag')) {
conventionMapping.tag = { imageTag }
}
}

我想要的是当我运行gradle pushDockerImage时,如果源代码没有更改,则可以跳过此任务。但是,现在每次我运行 gradle pushDockerImage ,它会被执行并持续很长时间,将镜像推送到docker注册表。

我还运行gradle --info pushDockerImage两次,第二次gradle显示以下信息:

Skipping task ':core/sample:buildDockerImage' as task onlyIf is false.
:core/sample:buildDockerImage SKIPPED
:core/sample:buildDockerImage (Thread[main,5,main]) completed. Took 1.765 secs.
:core/sample:pushDockerImage (Thread[main,5,main]) started.
:core/sample:pushDockerImage
Executing task ':core/sample:pushDockerImage' (up-to-date check took 0.001 secs) due to:
Task has not declared any outputs.

所以这里buildDockerImage被跳过,但是 pushDockerImage不是。我怎样才能跳过它?

最佳答案

我认为您需要在任务 copyJar 上声明创建的图像作为 pushDockerImage 任务的输入。像这样的东西:

task pushDockerImage(type: DockerPushImage) {
dependsOn buildDockerImage
inputs.file project.file("$project.buildDir/docker")
...

请参阅 gradle 用户指南第 17.9 段:https://docs.gradle.org/current/userguide/more_about_tasks.html了解详情

关于java - 如何在某些情况下跳过 bmuschko/gradle-docker-plugin 引入的 gradle 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36932364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com