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

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

  • libs-release-local: локальный репозиторий для внутренних библиотек
  • libs-snapshot-local: локальный репозиторий для внутренних снимков

Генератор Artifactory Gradle script может генерировать script, который использует только один репозиторий для публикации артефакта, используя плагин 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

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

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

...

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

    }