Android - несколько вариантов загрузки AAR Nexus - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть проект со структурой, как показано ниже. У него есть «main-module», который находится в центре нашего развития, и который должен быть в состоянии публиковать AAR для двух вариантов (отладка, выпуск) для Nexus. У нас также есть несколько других модулей зависимости и тестовое приложение.

project | |- app |- main-module |- module-a |- module-b ...

Я собираюсь запустить сборку, которая упакует main-module AAR, а затем загрузит оба из них в репозитории Nexus. Отладочный AAR перейдет в репозиторий моментальных снимков, а релизная версия перейдет в репозиторий релизов. У меня есть несколько кусочков головоломки, но я не совсем уверен, как их связать.

Что у меня есть:

Создание AAR

gradlew assemble

Опубликовать AAR

project.uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/nexus/content/repositories/snapshots/") {
            authentication(userName: "deployment", password: "password123")
        }
        pom.version = "0.0.1-SNAPSHOT"
        pom.artifactId = "MainModule"
        pom.groupId = "com.myorg.test"
    }
}

Сборка работает, и я могу выдвинуть версию для Nexus. Я не знаю, как предоставить config для отладочной и выпускной версий, чтобы у них был правильный репозиторий (например, /snapshots vs /release) и правильная версия (имя версии выпуска не будет содержать SNAPSHOT).

После работы я перенесу имена, версии и учетные данные в свойства, а учетные данные не будут проверены в системе контроля версий, пока кто-то не указал на это.

Использование:

  • грейфер-обертка 4.4
  • плагин gradle 3.1.4

1 Ответ

0 голосов
/ 07 ноября 2018

Итак, после нескольких дней копания я нашел решение. Это довольно грубо, я еще не оптимизировал его, но решение работает. Обратите внимание, что предполагается, что ваши aar-файлы содержат текст «debug» и «release» в названии, если их нет, вы можете приспособиться к вашему проекту. Я не знаю, как это применимо к модулям, которые имеют больше, чем просто варианты отладки и выпуска, или если задействованы разновидности продукта.

android-maven-gradle-plugin

Интеграция android-maven-gradle-plugin . Шаги в ссылке на документацию.

Модуль build.gradle

apply plugin: 'com.github.dcendents.android-maven'

afterEvaluate {
  uploadArchives {
    repositories {
        mavenDeployer {

            addFilter('debug') { artifact, file ->
                artifact.name.contains("debug")
            }
            addFilter('release') { artifact, file ->
                artifact.name.contains("release")
            }

            pom('debug').groupId = 'com.yourgroup'
            pom('release').groupId = 'com.yourgroup'
            pom('debug').artifactId = "MyArtifact"
            pom('release').artifactId = "MyArtifact"
            pom('debug').version = android.defaultConfig.versionName + "-SNAPSHOT"
            pom('release').version = android.defaultConfig.versionName
            pom.packaging = 'aar'

            repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {
                authentication(userName: 'user'), password: 'pwd')
            }
            snapshotRepository(url: "http://localhost:8081/nexus/content/repositories/snapshots/") {
                authentication(userName: 'user'), password: 'pwd')
            }
        }
    }
 }
}
...