Gradle: подготовить базовый пакет публикации в репозитории Maven - PullRequest
0 голосов
/ 10 мая 2018

У меня есть файл gradle для создания JAR и публикации его в репозитории maven на сервере Nexus.

build.gradle file

publishing {
    publications {
        maven(MavenPublication) {
            artifact shadowJar
        }
    }
    repositories {
        maven {
            credentials {
                username nexusUsername
                password nexusPassword
            }
            if (IsSnapshot.toBoolean())
                url "${nexusUrl}/repository/maven-snapshots/"
            else
                url "${nexusUrl}/repository/maven-releases/"
        }
    }
}

Эта задача публикует файл JAR всоответствующий репозиторий (снимок / релизы) на основе значения IsSnapshot.

У меня есть еще одна переменная: DoPublish.Если DoPublish равно true, я хочу опубликовать пакет;в противном случае я не хочу публиковать пакет на нексусе.

Я думаю, мне следует установить url на пустую строку в таких случаях.Есть ли лучшие предложения?

Вывод задачи gradle

Задачи публикации

generatePomFileFor {module1} Publication - генерирует POM-файл Maven для публикации 'module1'.

generatePomFileFor {module2} Publication - создает POM-файл Maven для публикации 'module2'.

generatePomFileForMavenPublication - создает POM-файл Maven для публикации 'maven'.

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

publish {module1} PublicationToMavenLocal - публикует публикацию Maven 'module1' в локальном репозитории Maven.

publish {module1} PublicationToMavenRepository - публикует публикацию Maven 'module1'в хранилище Maven 'maven'.

publish {module2} PublicationToMavenLocal - публикует публикацию Maven 'module2' в локальном хранилище Maven.

publish {module2} PublicationToMavenRepository - публикует публикацию Maven 'module2' вMaven хранилище 'Maven'.

publishMavenPublicationToMavenLocal - публикует публикацию Maven 'maven' в локальном репозитории Maven.

publishMavenPublicationToMavenRepository - публикует публикацию Maven 'maven' в репозиторий Maven 'maven'.

* 1042LocalTo публикации -Публикации Maven, созданные этим проектом, помещаются в локальный кеш Maven.

1 Ответ

0 голосов
/ 10 мая 2018

Задачи могут быть условно деактивированы с помощью onlyIf, как описано в документации к Gradle: https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:using_a_predicate

Задача, о которой идет речь, здесь publishMavenJavaPublicationToMavenRepository, как описано здесь https://docs.gradle.org/current/userguide/publishing_maven.html,, и эту задачу необходимо отключить:

publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }

Поскольку задача publishMavenJavaPublicationToMavenRepository генерируется динамически при успешной настройке публикации, она может быть недоступна при синтаксическом анализе и оценке сценария сборки, что приводит к исключению. В этом случае его можно обновить по завершении задачи:

gradle.taskGraph.whenReady { graph -> 
  publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }
}

Это может быть другая задача, если вы используете другой плагин публикации, но идея та же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...