Я пытаюсь создать задачу Gradle, которая будет запускать очистку, сборку, а затем запускать задачу buildDockerImage из плагина bmuschko/gradle-docker-plugin. Я могу успешно запустить чистую задачу, задачу сборки и задачу buildDockerImage в отдельных командах в командной строке, но когда я пытаюсь создать одну задачу, которая выполняет все три, я получаю сообщение об ошибке:
.../config-server/build/docker/state/DockerBuildImage_Decorated (No such file or directory)
Похоже, что gradle-docker-plugin пытается добавить какой-то файл журнала в каталог /build/docker/state, но этот каталог отсутствует, когда я запускаю clean, build и buildDockerImage в одной задаче. Однако каталог присутствует, когда я запускаю их как отдельные команды в CLI.
Это работает
Если я не пытаюсь очистить... он работает правильно, и создается образ докера:
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
task buildDockerImage(type: DockerBuildImage) {
doFirst {
copy {
from 'src/main/resources/docker/Dockerfile'
into 'build/libs'
}
}
inputDir = project.file('build/libs')
tag = alexFabian + "/" + jar.baseName
}
task myBuildDockerImage(type: Task, dependsOn: ['build' ,'buildDockerImage']) {
buildDockerImage.mustRunAfter build
}
Мой каталог сборки выглядит так:
/classes
/dependency-cache
/docker
/libs
/reports
/resources
/test-results
/tmp
Это не удается
Но когда я добавляю зависимость от «чистой» задачи... задача buildDockerImage завершается сбоем, потому что не может найти каталог /build/docker
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
task buildDockerImage(type: DockerBuildImage) {
doFirst {
copy {
from 'src/main/resources/docker/Dockerfile'
into 'build/libs'
}
}
inputDir = project.file('build/libs')
tag = afabian + "/" + jar.baseName
}
task myBuildDockerImage(type: Task, dependsOn: ['clean', 'build' ,'buildDockerImage']) {
build.mustRunAfter clean
buildDockerImage.mustRunAfter build
}
Теперь мой каталог build/ выглядит так (отсутствует каталог /docker):
/classes
/dependency-cache
/libs
/reports
/resources
/test-results
/tmp
И я получаю эту ошибку:
Execution failed for task ':buildDockerImage'.
> .../config-server/build/docker/state/DockerBuildImage_Decorated (No such file or directory)
Я использовал Maven в прошлом и новичок в Gradle, поэтому мое текущее понимание ограничено.
- Использование градиента (обертки): 2.11
- Использование gradle-docker-plugin: com.bmuschko:gradle-docker-plugin:2.6.6
Любая помощь приветствуется!
doFirst
в вашей задаче? - person RaGe   schedule 09.03.2016copy
выполняется до задачи очистки? Попробуйте удалитьdoFirst
из копии. - person RaGe   schedule 09.03.2016doFirst
, но сборка завершилась неудачно, и я получилDirectory .../build/docker specified for property 'inputDir' does not exist.
. Поэтому я предполагаю, что без do сначала выполняется строка inputDir до завершения копирования. - person Fabian   schedule 29.03.2016