Java Maven和Gradle构建的主题缓存
Concourse CI 3.3.x引入了在任務(wù)運(yùn)行之間緩存路徑的功能。 此功能有助于加快將內(nèi)容緩存在特定文件夾中的任務(wù)-在這里,我將演示如何使用此功能來加快基于Maven和Gradle的Java構(gòu)建。
我在這篇文章中使用的代碼和管道可以在我的github倉庫中找到 – https://github.com/bijukunjummen/ci-concourse-caching-sample
如果要使用gradle包裝器通過以下命令構(gòu)建項(xiàng)目,那么讓我從gradle構(gòu)建開始:
./gradlew clean build然后gradle默認(rèn)會(huì)將依賴庫下載到用戶主文件夾中的“ .gradle”文件夾中。 可以使用“ GRADLE_USER_HOME”環(huán)境變量更改此文件夾的此位置,這是我將在合并任務(wù)中用于控制緩存路徑的位置的變量。
構(gòu)建我的項(xiàng)目的場所任務(wù)如下所示 :
--- platform: linux image_resource:type: docker-imagesource:repository: openjdktag: 8-jdk inputs:- name: repo outputs:- name: out run:path: /bin/bashargs:- repo/ci/tasks/build.shcaches:- path: .gradle/- path: .m2/params:PROJECT_TYPE:請(qǐng)參閱上面的caches參數(shù)指定為“ .gradle”。 因此,我現(xiàn)在要做的就是確保Gradle使用此位置作為其主文件夾,這將在我的構(gòu)建腳本中執(zhí)行:
export ROOT_FOLDER=$( pwd ) export GRADLE_USER_HOME="${ROOT_FOLDER}/.gradle"為Maven構(gòu)建緩存Maven資源的過程是相同的,Maven將依賴的jar緩存在可以以多種方式指定的位置,我使用的一種方式是通過動(dòng)態(tài)生成的設(shè)置來指定此位置。 xml文件的格式如下:
M2_HOME=${HOME}/.m2 mkdir -p ${M2_HOME}M2_LOCAL_REPO="${ROOT_FOLDER}/.m2"mkdir -p "${M2_LOCAL_REPO}/repository"cat > ${M2_HOME}/settings.xml <<EOF<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>${M2_LOCAL_REPO}/repository</localRepository> </settings>EOF這是大量的bash腳本,它所要做的就是生成一個(gè)settings.xml,其中將localRepository標(biāo)記設(shè)置為“ .m2 / repository”文件夾,該文件夾相對(duì)于由concourse為構(gòu)建生成的臨時(shí)文件夾,因此可以緩存。
完成這些更改后,行為是下載在任務(wù)的第一次運(yùn)行時(shí)發(fā)生,但隨后被緩存以供后續(xù)運(yùn)行。 在我的本地場所設(shè)置中,gradle首次構(gòu)建大約需要2分鐘,而后續(xù)的構(gòu)建大約需要20秒!
您可以在我的演示項(xiàng)目中試用此功能– https://github.com/bijukunjummen/ci-concourse-caching-sample
翻譯自: https://www.javacodegeeks.com/2017/08/concourse-caching-java-maven-gradle-builds.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Java Maven和Gradle构建的主题缓存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝华为手机或长时间独占卫星通信 友商方案
- 下一篇: java.util接口_Java 8中j