如果子项目包含文件,则执行gradle任务

时间:2020-10-15 14:05:05

标签: docker gradle

我有一个包含多个模块的项目。其中一些是共享库,有些会生成docker容器。我想使用一个插件为模块的根目录中包含Dockerfile的所有模块构建映像。

这是我的项目结构:

root/
├─ docker1/
│  ├─ Dockerfile
├─ docker2/
│  ├─ Dockerfile
├─ common/
build.gradle

如果可能的话,我不想更改模块中的任何内容,而只执行一个任务。这样,可以添加更多生成图像的模块,而无需添加任何内容并保持每个模块中构建文件的清洁。通过添加以下每个应生成图像的模块构建文件,我一次成功创建了图像:

plugins {
    id 'com.palantir.docker' version '0.25.0'
}

docker {
    def image = String.format("myRepo:$tag")
    copySpec.from("$buildDir/libs").into("build/libs")
    name image
    printf "Built image %s", image
}
docker.dependsOn shadowJar

我这样称呼它:

$ ./gradlew :docker1:docker -Ptag=test
Built image myRepo:test

是否可以满足上述要求状态?如果没有,什么是在包含任务名称为docker的 all 模块中按名称执行任务的合适方法?

这失败了,因为我的根项目没有该任务:

$ ./gradlew :docker
Task 'docker' not found in root project 'root'.

0 个答案:

没有答案
相关问题