Как предотвратить запуск строки в build.gradle? - PullRequest
0 голосов
/ 26 сентября 2019

В настоящее время у меня есть приложение gradle, и я использую плагин gradle-docker.

В моем файле build.gradle есть две задачи Docker, каждая из которых должна пометить образ для соответствующего реестра контейнера (указано project.group):

task buildDockerSandbox(type: Docker) {
    project.group = 'gcr.io/sandbox'
    baseImage "java:8"
    runCommand("mkdir a")
    addFile("a.jar", "a/")
    workingDir("/a")
    entryPoint(["java", "-Dspring.profiles.active=sandbox", "-jar", "a.jar"])
}

task buildDockerProd(type: Docker) {
    project.group = 'gcr.io/prod'
    baseImage "java:8"
    runCommand("mkdir b")
    addFile("b.jar", "b/")
    workingDir("/b")
    entryPoint(["java", "-Dspring.profiles.active=prod", "-jar", "b.jar"])
}

Однако, когда я запускаю "gradle buildDockerSandbox", строка "project.group = 'gcr.io/prod'" регистрируется во время выполнения задачи buildDockerSandbox,в результате чего изображение будет помечено для неправильной среды.

Мне нужно отключить задачу, которая НЕ запускается из-за фактического запуска строки "project.group = {group}", чтобы предотвратить это, но не знаю как.

Ожидаемый результат: Запуск «gradle buildDockerSandbox» помечает изображение как «gcr.io/sandbox: enjapplicationName}», а запуск «gradle buildDockerProd» помечает изображение как «gcr.io/prod: enjapplicationName}».

Фактический результат: Обе задачи помечают изображение как "gcr.io/prod: enjapplicationName broadcast"

.

1 Ответ

3 голосов
/ 26 сентября 2019

Материал, который вы добавляете в замыкание для задачи, применяется, когда Gradle конфигурирует ваши задачи, а не при их фактическом выполнении.Таким образом, в этом случае вы определяете две задачи, и обе они задают общее свойство project.group.Таким образом, независимо от того, какая задача настроена в последний раз, «выигрывает», независимо от того, какую задачу вы намерены запустить.

Существует множество плагинов Docker для Gradle, и мне кажется, что вы используете один из Transmode .Из документации видно, что вы не можете создать два образа с разными именами хранилища Docker в одном проекте Gradle.Поэтому я бы сказал, что вы можете либо установить имя самостоятельно после построения образа (например, в блоке doLast), разделить его на два проекта Gradle или использовать другой плагин Docker, который более настраиваемый.Один из bmuschko , вероятно, является наиболее широко используемым и многофункциональным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...