Py学习  »  docker

Gradle Docker下载依赖项

Boris van Katwijk • 6 年前 • 903 次点击  

我有一个JavaGracle DoCKFr档,它设置了渐变包装器,复制源文件,创建一个JARFILE并运行它:

FROM anapsix/alpine-java:9_jdk

WORKDIR /app

# Prepare Gradle
COPY build.gradle .
COPY gradle/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.jar
COPY gradle/wrapper/gradle-wrapper.properties ./gradle/wrapper/gradle-wrapper.properties
COPY gradlew .
RUN sh -c "./gradlew"

# Download depencencies here?

COPY . .

# Create Jar
RUN sh -c "./gradlew jar"

EXPOSE 7000

# Run Jar
CMD [ \
  "java", \
  "-jar", "./build/libs/projectname.jar" \
  ]

这很好,但是因为jar步骤是下载依赖项的第一步, 每次我修改源代码时,都需要再次下载所有依赖项 . 这使得构建周期比需要的要慢得多。

我想指示gradle下载 build.gradle 在复制源文件之前一步中的文件。

我只是想打个电话 RUN sh -c "./gradlew compileJava" 在复制源代码之前,gradle很聪明,他说没有工作要做,而包含一个文件实际上会下载依赖项。

有没有一种方法可以简单地指示gradle下载依赖项 如中所述 平地 ?或者什么是最好的解决办法?

编辑:我不是问利用Gradle缓存,我是问利用Docker层来存储Gradle依赖项。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43480
文章 [ 1 ]  |  最新文章 6 年前
Boris van Katwijk
Reply   •   1 楼
Boris van Katwijk    6 年前

解决方法是创建一个哑Java文件并调用 compileJava 下载依赖项:

# Trick to get Gradle to download dependencies
RUN mkdir -p /app/src/main/java
RUN sh -c "echo 'public class Dummy {}' > /app/src/main/java/Dummy.java && ./gradlew compileJava"

对我来说,这看起来很傻,但至少目前是可行的。