【问题标题】:Building Android always downloads dependencies for each build构建 Android 总是为每个构建下载依赖项
【发布时间】:2017-05-29 17:30:11
【问题描述】:

我正在使用 Travis CI 并已连接到我的 github 帐户。构建总是成功的,但它们需要很长时间,因为 travis 将继续为每个构建下载相同的依赖项。即下载通常需要 5 分钟以上,但构建只需不到一分钟。 Travis 上是否有任何配置可以避免这种依赖项的下载?

以下是每次下载内容的 sn-p:

Starting a Gradle Daemon (subsequent builds will be faster)

Download https://maven.google.com/com/android/tools/build/gradle/3.0.0-alpha2/gradle-3.0.0-alpha2.pom
Download https://jcenter.bintray.com/com/dicedmelon/gradle/jacoco-android/0.1.1/jacoco-android-0.1.1.pom
Download https://maven.google.com/com/android/tools/build/gradle-core/3.0.0-alpha2/gradle-core-3.0.0-alpha2.pom
Download https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.4/groovy-all-2.4.4.pom

我的 travis.yml 文件:

language: android

jdk: oraclejdk8

env:
  global:
    - ANDROID_TARGET=android-25
    - ANDROID_ABI=armeabi-v7a

android:
  components:
  - tools
  - platform-tools
  - build-tools-25.0.2
  - android-25
  - extra-android-m2repository
  - sys-img-${ANDROID_ABI}-${ANDROID_TARGET}

licenses:
  - android-sdk-license-.+
  - '.+'

script:
    - ./gradlew --daemon build jacocoTestReport

after_success:
    - bash <(curl -s https://codecov.io/bash)

非常感谢您的任何建议,

【问题讨论】:

  • CI 的部分重点是每次都进行干净的构建,以确保软件可以构建。保持依赖关系会破坏目的。
  • Redownloading dependencies ./gradlew build --refresh-dependencies 和做clean build ./gradlew clean build 不一样。

标签: android continuous-integration travis-ci


【解决方案1】:

您可以使用the cache 来避免这些下载,但it's not recommended 用于Android SDK。

Gradle 依赖项已记录在 here

Gradle 中依赖缓存的一个特性意味着要避免 每次构建后上传缓存,您需要添加以下内容 行到您的 .travis.yml:

before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
  directories:
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/

您可以将其他目录添加到缓存中,但不建议使用large files

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 2021-10-21
    • 2021-07-06
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多