Использование плагина gradle перед загрузкой других плагинов в buildscript - PullRequest
0 голосов
/ 06 января 2019

У меня есть свой собственный плагин Gradle, который содержит файл с версиями для других плагинов. В настоящее время, когда я делаю новый проект, мне приходится копировать их, поскольку я не могу использовать версии из плагина.

Есть ли способ загрузить мой плагин, применить его, а затем загрузить другие плагины? В настоящее время я могу сделать это только для проекта, когда создаю модель плагина с именем buildSrc, поскольку он автоматически добавляет его к другим модулям.

Пример того, чего я хочу достичь:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://plugins.gradle.org/m2/" }
    }

    dependencies {
        classpath "ca.allanwang:kau:$kau_version"
    }

    // Apply plugin before other dependencies so I can use it
    apply plugin: "ca.allanwang.kau"

    dependencies {
        classpath kauPlugin.android
        classpath kauPlugin.kotlin
        classpath kauPlugin.androidMaven
        classpath kauPlugin.playPublisher
        classpath kauPlugin.dexCount
        classpath kauPlugin.gitVersion
        classpath kauPlugin.spotless
    }

    wrapper.setDistributionType(Wrapper.DistributionType.ALL)
}

и как это выглядит, когда у меня есть плагин в качестве модуля в моем основном проекте:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://plugins.gradle.org/m2/" }
    }

    apply plugin: "ca.allanwang.kau"

    dependencies {
        classpath kauPlugin.android
        classpath kauPlugin.kotlin
        classpath kauPlugin.androidMaven
        classpath kauPlugin.playPublisher
        classpath kauPlugin.dexCount
        classpath kauPlugin.gitVersion
        classpath kauPlugin.spotless
    }

    wrapper.setDistributionType(Wrapper.DistributionType.ALL)
}

1 Ответ

0 голосов
/ 08 января 2019

Вы должны быть в состоянии достичь того, что вы хотите, комбинируя разные вещи:

  • Определите свои версии в Plugin<Settings>, который вы применяете в вас settings.gradle(.kts), используя тот факт, что Settings объект равен ExtensionAware
  • Определите ваш путь к классу плагина в том же файле настроек , используя pluginManagement
  • Применение плагинов в ваших проектах без указания версии - см. этот пример для более простой версии, которая не определяет версии через pluginManagement

Пример: https://github.com/ljacomet/setttings-plugin-props с плагином в buildSrc, но его можно без проблем опубликовать и использовать как бинарный плагин.

...