在某些情况下,如何跳过一个gradle任务,由bmuschko / gradle-docker-plugin引入?
我使用gradle插件bmuschko / gradle-docker-plugin将docker与gradle集成在一起。 我在build.gradle文件中创build了一些任务:
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
,它都会被执行,并持续很长时间才能将映像推gradle pushDockerImage
registry中。
我也运行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上声明创build的图像作为pushDockerImage任务的input。 就像是:
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
- 如何修改从inspect命令得到的docker image config
- 如何部署Dockerized Java / Widlfly Swarm Fat Jar微服务+数据库
- 什么添加到我的SBT支持非播放项目的Docker镜像创build?
- stream浪汉和docker:容器开始从未离开“停止”状态
- 通过peer @ io_fillbuf重置连接 – fd:8(HTTPClient :: KeepAliveDisconnected)
- 是否有可能在Visual Studio Code上使用Docker Toolbox?
- 如何调查Docker Swarm模式closures容器?
- 使用主机环境variables与Dockerfile
- 使用属性文件的kafka主题configuration