是否有可能只使用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