Настройка плагина Gradle Artifactory для публикации в репозитории release или snapshot


Artifactory имеет два предопределенных репозитория для локальных библиотек:

  • libs-release-local: локальный репозиторий для внутренних библиотек
  • libs-snapshot-local: локальное хранилище для внутренних снимков
Генератор скриптов Gradle Artifactory может генерировать скрипт, который использует только один репозиторий для публикации артефактов, используя плагин artifactory для Gradle.

Вот пример (только соответствующая часть):

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'libs-release-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true

        }
    }
    resolve {
        repository {
            repoKey = 'libs-release'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true

        }
    }
}

Я хотел бы настроить плагин использовать репозиторий libs-release-local или libs-snapshot-local на основе версии (т. е. если версия заканчивается на -SNAPSHOT, то опубликовать в libs-snapshot-local).

Я видел, что это возможно с помощью интегрированного плагина Gradle maven (см. элемент snapshotRepository mavenDeployer в задаче uploadArchives), но эта функциональность кажется недоступной в плагине artifactory.

Есть ли какой-либо способ добиться такого желаемого поведения?
1 12

1 ответ:

Поскольку это заводной код, просто используйте переменную, которая зависит от версии.

String repo = version.endsWith('SNAPSHOT') ? 'libs-snapshot-local' : 'libs-release-local'   

...

repository {
        repoKey = repo
        username = "${artifactory_user}"
        password = "${artifactory_password}"
        maven = true

    }