在构建脚本中加载其他插件之前使用gradle插件

在构建脚本中加载其他插件之前使用gradle插件,gradle,gradle-plugin,Gradle,Gradle Plugin,我有自己的gradle插件,其中包含一个包含其他插件版本的文件。目前,每当我做一个新的项目,我必须复制它们,因为我不能使用插件的版本 是否有任何方法可以加载我的插件,应用它,然后加载其他插件?目前,当我制作名为buildSrc的插件模型时,我只能自己为项目做这件事,因为它会自动将它添加到其他模块中 我想要实现的示例: buildscript { repositories { google() jcenter() maven { url 'h

我有自己的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)
}

你应该能够通过组合不同的东西来实现你想要的:

  • 利用is
    ExtensionAware
  • 在相同的设置文件中定义插件类路径
  • 在项目中应用插件,而不指定版本-有关不通过
    pluginManagement定义版本的更简单版本,请参阅

示例:使用
buildSrc
中的插件,但它可以作为二进制插件发布和使用,没有任何问题。

谢谢!这看起来正是我需要的。我当前的插件是,本质上是向项目插件添加扩展。其中一些是功能,尽管它们不会因项目而改变。它们都可以添加到插件设置中吗?如果没有,是否可以有一个包含多个实现类的插件?
Settings
ExtensionAware
就像
Project
一样。现在,您可能需要在设置和项目之间拆分扩展,具体取决于它们在构建中的使用情况。如果解决了您的问题,请接受答案。我现在接受答案。我仍然要测试它,看看它是否能与项目和设置一起工作,但你已经告诉我,我可以在我以前不知道的设置中应用插件。