Как сделать версию локальных зависимостей gradle? - PullRequest
0 голосов
/ 31 октября 2019

Мой проект Android содержит библиотеку, которая поставляется в виде файла AAR.

Существует несколько вариантов включения локальных файлов AAR. Я могу объявить файловую зависимость: implementation files('libs/mylib.aar')

Или я могу поместить AAR в другой модуль и затем использовать зависимость проекта: implementation project(':mylibmodule')

Однако я хочу указать точную версиюмоей библиотеки: mylib:1.0.0

К сожалению, я не знаю, как указать версию без использования какого-либо удаленного хранилища. Обратите внимание, что я не хочу загрузить библиотеку в JitPack, MavenCentral или аналогичную. Все, что я хочу, это указать версию локального файла AAR.

Обновление

Файл AAR представляет собой Zip-файл со следующим содержимым:

/proguard.txt      
/R.txt             
/AndroidManifest.xml  
/public.txt        
/classes.jar       
/res/values/values.xml  

Обратите внимание, что AndroidManifest.xml содержит версию библиотеки. Однако я предполагаю, что gradle всегда ожидает файл pom для информации о версиях.

1 Ответ

0 голосов
/ 02 ноября 2019

Я понял, что gradle позволяет указать локальный репозиторий Maven по определенному пути:

repositories {
   maven {
       url uri("${projectDir}/mylibdir")
   }
}

Чтобы использовать локальный репозиторий Maven, мне нужно собрать свою библиотеку как артефакт Maven. Чтобы создать артефакт Maven, достаточно создать файл POM в правой подпапке. Файл AAR остается без изменений, так как Maven не заботится о формате артефакта. Создание артефакта Maven можно автоматизировать с помощью плагина maven-publish, например:

apply plugin: 'maven-publish'

publishing {
    publications {
        myRelease(MavenPublication) {
            groupId 'com.foo'
            artifactId 'my-artifact'
            version '1.0.0'
            artifact("$buildDir/outputs/aar/my-artifact.aar")
        }
    }
    repositories {
        maven {
            url "$buildDir/repo"
        }
    }
}

Однако, поскольку мне на самом деле не нужно использовать Maven, проще выбрать добавление версии к имени файла AAR. ,Я сделал это с помощью следующего фрагмента в build.gradle моей библиотеки:

android.libraryVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "${archivesBaseName}-${variant.name}-${defaultConfig.versionName}.aar"
        }
    }
...