是否有可能只使用build.gradle
文件下载gradle依赖关系?下载依赖只有build.gradle文件
我试图做到的是以下几点:
我有一组的单元测试,我想执行它们(作为CI过程的一部分)码头工人,容器内。最初,我使用Docker Hub的openjdk:8-jdk图像作为我的测试的基础映像。因此,搬运工撰写文件包含以下内容:
version: '3.2'
services:
unit:
image: openjdk:8-jdk
volumes:
- ..:/usr/test
working_dir: /usr/test
command: sh -c "exec ./gradlew junitPlatformTest -Punit -p moduleA/"
整个项目安装在容器内/usr/test
目录。当容器启动时,它将对moduleA
执行junitPlatformTest
任务。 openjdk:8-jdk
图像的问题在于,每次运行unit
服务时都会下载gradle及其依赖项。
为了解决这个问题,我决定创建一个新的图像,这个图像会有gradle和我已经下载的项目依赖项。该Dockerfile
如下:
FROM openjdk:8-jdk
COPY . /usr/test
WORKDIR /usr/test
RUN apt-get -y install wget unzip
RUN wget https://services.gradle.org/distributions/gradle-4.1-bin.zip
RUN mkdir /opt/gradle
RUN unzip -d /opt/gradle gradle-4.1-bin.zip
RUN /opt/gradle/gradle-4.1/bin/gradle dependencies
的build.gradle
文件位于同一文件夹中Dockerfile所以COPY . /usr/test
拷贝它在工作目录的命令。
但是,执行gradle dependencies
命令不会下载这些库。在建立图像后,运行一个容器并进入它(使用docker exec),似乎~/.gradle/caches/modules-2/files-2.1/
目录仅包含pom文件,而不是jar。
如果gradle dependencies
是正确的命令,我不会使用它。有什么建议么?
编辑 - 摇篮文件
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
jcenter()
}
ext.versions = new Properties()
file("./versions.properties").withInputStream {
stream -> ext.versions.load(stream)
}
dependencies {
testCompile("org.junit.jupiter:junit-jupiter-api:$versions.junitJupiterVersion")
testCompile("org.junit.jupiter:junit-jupiter-engine:$versions.junitJupiterVersion")
testCompile("org.junit.jupiter:junit-jupiter-params:$versions.junitJupiterVersion")
testCompile("org.mockito:mockito-core:'$versions.mockitoCore")
testCompile("org.junit.platform:junit-platform-launcher:1.0.0-RC3")
compile("com.google.inject:guice:$versions.guice")
....
}
你能提供你的gradle文件吗? – yamenk
请在你的问题中分享gradle文件 –
@yamenk,Tarun Lalwani添加了gradle文件 – Schaliasos