Intereting Posts
Метод тестирования единицы измерения, который содержит выражение лямбда Android Studio Можем ли мы создать Scroll TextView в качестве статуса lastsen whatsapp Получить другого дочернего элемента, который разделяет родительский элемент с текущим представлением Как изменить цвет фона кнопки переключения на Android Получение ClassNotFoundException при загрузке приложения Android Ошибка телефонной почты – «Невозможно прочитать свойство« захват »неопределенного» на Android Android: Получите UsbDevice от намерения Java.util.zip.ZipException: дублирующаяся запись: com / google / common / base / FinalizableReference.class Как программно закрыть меню ActionMode на Honeycomb? Нечетное поведение: тип класса объекта, перенастроенного методом getText () изменений TextView после создания AccessibilityNodeInfo в TextView Android: прослушать приложение, установленное / обновленное широковещательное сообщение Как сохранить размер аудио, уменьшен, во время записи в андроиде? Как скопировать вывод logcat в буфер обмена? Как установить номер версии приложения в Android Studio RelativeLayout внутри LinearLayout?

Gradle – загрузка зависимостей, блокировка версий и зависимостей обновлений вручную

Проблема.

Управление зависимостями Gradle сделало так:

  • Нет простого способа проверить наличие обновлений зависимостей (только с использованием сторонних плагинов, таких как ben-manes / gradle-versions-plugin ) и загрузки обновлений, заменяющих старые версии;
  • Артефакты зависимостей загружаются из удаленных репозиториев, а затем сохраняются в кэше градиента и повторно используются в последующих сборках; Но успешная компиляция вашего проекта не должна зависеть от наличия подключения к Интернету, наличия удаленных репозиториев и наличия определенных версий зависимостей в этих хранилищах.

Цель.

  • Загружать и хранить все артефакты зависимостей в VCS;
  • Вручную проверяйте обновления для этих зависимостей и загружайте их.

Solutions Collecting From Web of "Gradle – загрузка зависимостей, блокировка версий и зависимостей обновлений вручную"

Мое решение работает для настройки Gradle с использованием java или плагинов для android .

java plugin определяет конфигурации compile и testCompile . compile предназначена для зависимостей, необходимых для компиляции источника проекта. testCompile предназначен для зависимостей, необходимых для компиляции тестового источника проекта.

Давайте определим наши собственные конфигурации в build.gradle :

 configurations { download testDownload } 

Затем создадим каталоги:

  • libs/compile/downloaded – это где будут download зависимости download ;
  • libs/testCompile/downloaded – это где будут храниться зависимости testDownload .

Затем мы определяем несколько задач.

Удалить зависимости от конфигурации download :

 task cleanDownloadedDependencies(type: Delete) { delete fileTree('libs/compile/downloaded') } 

Удалить зависимости из конфигурации testDownload :

 task cleanDownloadedTestDependencies(type: Delete) { delete fileTree('libs/testCompile/downloaded') } 

Загружать зависимости из конфигурации download :

 task downloadDependencies(type: Copy) { from configurations.download into "libs/compile/downloaded/" } 

Загружать зависимости из конфигурации testDownload :

 task downloadTestDependencies(type: Copy) { from configurations.testDownload into "libs/testCompile/downloaded/" } 

Выполните все вышеперечисленные задачи для обновления зависимостей:

 task updateDependencies { dependsOn cleanDownloadedDependencies, cleanDownloadedTestDependencies, downloadDependencies, downloadTestDependencies } 

Затем мы определяем наши зависимости:

 dependencies { download( 'com.google.code.gson:gson:+', 'joda-time:joda-time:+', ) testDownload( 'junit:junit:+' ) 

И затем мы расскажем, где в конфигурациях compile и testCompile должны использоваться зависимости, используемые для компиляции.

  compile fileTree(dir: 'libs/compile', include: '**/*.jar') testCompile fileTree(dir: 'libs/testCompile', include: '**/*.jar') } 

Теперь вы можете загружать или обновлять уже загруженные зависимости:

 ./gradlew updateDependencies 

Если вы используете плагин android вы также можете добавить конфигурацию androidTestDownload для зависимостей, необходимых для компиляции и запуска тестов на Android-устройстве. Также некоторые зависимости могут предоставляться как артефакты aar .

Это пример конфигурации Gradle с использованием плагина android :

 ... repositories { ... flatDir { dirs 'libs/compile', 'libs/compile/downloaded', 'libs/testCompile', 'libs/testCompileDownloaded', 'libs/androidTestCompile', 'libs/androidTestCompile/downloaded' } } configurations { download testDownload androidTestDownload } android { ... } dependencies { download( 'com.android.support:support-v4:+', 'com.android.support:appcompat-v7:+', 'com.google.android.gms:play-services-location:+', 'com.facebook.android:facebook-android-sdk:+', 'com.vk:androidsdk:+', 'com.crashlytics.sdk.android:crashlytics:+', 'oauth.signpost:signpost-core:+', 'oauth.signpost:signpost-commonshttp4:+', 'org.twitter4j:twitter4j-core:+', 'commons-io:commons-io:+', 'com.google.code.gson:gson:+', 'org.jdeferred:jdeferred-android-aar:+' ) compile fileTree(dir: 'libs/compile', include: '**/*.jar') testCompile fileTree(dir: 'libs/testCompile', include: '**/*.jar') androidTestCompile fileTree(dir: 'libs/androidTestCompile', include: '**/*.jar') } task cleanDownloadedDependencies(type: Delete) { delete fileTree('libs/compile/downloaded') } task cleanDownloadedTestDependencies(type: Delete) { delete fileTree('libs/testCompile/downloaded') } task cleanDownloadedAndroidTestDependencies(type: Delete) { delete fileTree('libs/androidTestCompile/downloaded') } task downloadDependencies(type: Copy) { from configurations.download into 'libs/compile/downloaded/' } task downloadTestDependencies(type: Copy) { from configurations.testDownload into 'libs/testCompile/downloaded/' } task downloadAndroidTestDependencies(type: Copy) { from configurations.androidTestDownload into 'libs/androidTestCompile/downloaded/' } task updateDependencies { dependsOn cleanDownloadedDependencies, cleanDownloadedTestDependencies, cleanDownloadedAndroidTestDependencies, downloadDependencies, downloadTestDependencies, downloadAndroidTestDependencies } fileTree(dir: 'libs/compile', include: '**/*.aar') .each { File file -> dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar']) } fileTree(dir: 'libs/testCompile', include: '**/*.aar') .each { File file -> dependencies.add("testCompile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar']) } fileTree(dir: 'libs/androidTestCompile', include: '**/*.aar') .each { File file -> dependencies.add("androidTestCompile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar']) }