Использовать зависимости, загруженные во время gradle clean во время gradle bootRun - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я запускаю проект gradle через Dockerfile.Мне требуется, чтобы сборка выполнялась на сервере разработки, который имеет подключение к Интернету, и образ докера для развертывания на рабочем сервере, который не имеет подключения к Интернету.Для этого я пытаюсь получить все зависимости во время очистки gradle.Но когда я запускаю образ докера, он снова пытается загрузить все зависимые файлы из хранилища.Как сделать так, чтобы он указывал на кеш, который создается только во время очистки gradle.Я новичок в платформе Docker, любая помощь приветствуется.Спасибо.

Файл Docker выглядит следующим образом:

FROM openjdk:8

RUN mkdir -p /home/pma
WORKDIR /home/pma

VOLUME ["/home/pma"]
VOLUME ["/root/.gradle/caches/"]

#Setup gradle in the docker image and configure path variables
RUN \ 
    cd /usr/local && \
    curl -L https://services.gradle.org/distributions/gradle-4.2.1-bin.zip -o gradle-4.2.1-bin.zip && \
    unzip gradle-4.2.1-bin.zip && \
    rm gradle-4.2.1-bin.zip
ENV GRADLE_HOME=/usr/local/gradle-4.2.1
ENV PATH=$GRADLE_HOME/bin:$PATH

#Add the base code to the docker image
ADD . /home/pma/

#Here I am trying to download all dependencies which will be pushed to /root/.gradle/caches/
RUN ["gradle","--stacktrace","clean"]

#to be executed during the container creation phase
CMD ["gradle","--stacktrace","bootRun"]

1 Ответ

0 голосов
/ 25 сентября 2018

Я бы предпочел создать полный образ докера и запустить его в производство.

Если вы хотите использовать только кэшированные зависимости, используйте --offline при вызове задачи gradle.

Gradleразрешает только зависимости конфигураций, необходимых при выполнении задачи, например, compile не может быть разрешена без вызова задачи компиляции или другой задачи на основе конфигурации compile и ее зависимостей.

Вы можете написать пользовательскую задачу, повторяя все конфигурации и решая зависимости.

Похоже, что у кого-то еще была эта проблема раньше: Задача Gradle для разрешения всех настроенных зависимостей

Thisэто то, что он делал несколько лет назад (я сам не проверял):

task resolveDependencies {
    doLast {
        project.rootProject.allprojects.each { subProject ->
            subProject.buildscript.configurations.each { configuration ->
                configuration.resolve()
            }
            subProject.configurations.each { configuration ->
                configuration.resolve()
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...