【问题标题】:Use dependencies downloaded during gradle clean during gradle bootRun在 gradle bootRun 期间使用 gradle clean 期间下载的依赖项
【发布时间】:2019-03-01 04:49:40
【问题描述】:

我目前正在通过 Dockerfile 运行一个 gradle 项目。我要求在具有 Internet 连接的开发服务器上进行构建,并将 docker 映像部署在没有 Internet 连接的生产服务器上。为此,我试图在 gradle-clean 期间获取所有依赖项。但是当我运行 docker 镜像时,它再次尝试从存储库中下载所有依赖的 jar。如何使它指向仅在 gradle-clean 期间创建的缓存。 我是 Docker 框架的新手,感谢任何帮助。 谢谢。

Dockerfile如下:

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"]

【问题讨论】:

    标签: java docker spring-boot gradle dockerfile


    【解决方案1】:

    我更愿意构建一个完整的 docker 镜像并将其投入生产。

    如果您只想使用缓存的依赖项,请在调用 gradle 任务时使用 --offline

    Gradle 仅解决执行任务时所需配置的依赖关系,例如如果不调用编译任务或基于compile 配置及其依赖项的其他任务,compile 依赖项将无法解析。

    您可以编写一个自定义任务,遍历所有配置并解决依赖关系。

    看起来其他人之前遇到过这个问题:Gradle Task to Resolve All Configured Dependencies

    这是他几年前在做的事情(我自己没有测试过):

    task resolveDependencies {
        doLast {
            project.rootProject.allprojects.each { subProject ->
                subProject.buildscript.configurations.each { configuration ->
                    configuration.resolve()
                }
                subProject.configurations.each { configuration ->
                    configuration.resolve()
                }
            }
        }
    }
    

    【讨论】:

    • 我也为 gradle bootRun 尝试了 --offline 模式,但它抛出了关于无法解决依赖关系的错误。尽管它在 gradle build 期间下载了依赖项,但它仍然没有在本地查找依赖项。有没有其他方法可以访问 docker 镜像中的 gradle caches 文件夹?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2015-03-20
    • 2021-02-20
    • 2014-03-15
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多