Публикация многоразовых задач Gradle

Я хотел бы опубликовать некоторые общие части файла build.gradle для повторного использования в разных проектах (с использованием конструкции apply from: url_to_file). Для этого я создал проект под названием gradle-common, содержащий эти общие файлы сборки, с этим build.gradle файлом:

group 'org.example'
version '0.1.0'

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifact source: file('files/first.gradle'), classifier: 'first'
        }
        mavenJava(MavenPublication) {
            artifact source: file('files/second.gradle'), classifier: 'second'
        }
    }
    repositories {
        mavenLocal()
    }
}

В файлах после публикации в репозитории maven появляются такие файлы, как:

  • gradle-common-0.1.0-first.gradle
  • gradle-common-0.1.0-second.gradle

И у меня вопрос: как удалить номер версии из опубликованных артефактов и классификатора? Для меня идеальными файлами были бы:

  • first.gradle
  • second.gradle

person Piotr Chowaniec    schedule 09.02.2017    source источник


Ответы (1)


На ваш вопрос есть много разных ответов, но я думаю, вы пытаетесь создать что-то, что обычно делает плагин, не создавая плагин.

Лучший способ добавить функциональность в несколько проектов Gradle - это создать плагин < / а>. Вы также можете использовать правила, которые можно найти в этом простом руководстве. не отображается, но вы можете проверить некоторые собственные плагины gradle, например maven-publish.

Чтобы ответить на ваш вопрос, невозможно опубликовать артефакт в репозиторий maven без версии. Вы должны загрузить его вместе с версией (вы можете использовать my-artifact:1+ для загрузки последней), а затем самостоятельно удалить версию.


Мне также интересно, как вы планируете включать эти файлы в свои конкретные файлы Gradle. Вы не сможете использовать их в качестве зависимостей, поскольку разрешение зависимостей происходит после чтения скриптов. Если вы каким-то образом загружаете их до запуска скрипта, то для этого вам, вероятно, не нужен репозиторий maven.

person MartinTeeVarga    schedule 10.02.2017
comment
1. Я знаю, что мне нужна версия, но она указана дважды в URL-адресе. После публикации я могу получить доступ к файлу через: repository_url / имя_группы / gradle-common / 0.1.0 /, но я хотел бы иметь URL-адрес вида: repository_url / group_name / gradle-common / 0.1.0 / first.gradle 2. Моя первая идея заключалась в том, чтобы поместить в этот файл конфигурацию плагина sonarqube - есть некоторое количество свойств, которые необходимо определить который может быть определен одним для многих проектов - нет необходимости определять их в каждом файле build.gradle - person Piotr Chowaniec; 10.02.2017