代码之家  ›  专栏  ›  技术社区  ›  Hakanai

如何将Gradle构建分解为多个文件?

  •  0
  • Hakanai  · 技术社区  · 7 年前

    我正在编写一个Gradle插件,它包含多个独立配置块的集合,这些独立配置块将应用于任何应用该插件的项目。

    我想保持片段非常独立,以阻止其他人向现有位置添加不相关的逻辑,并提高插件实际配置的可见性。

    所以我想我可以这样做:

    class CommonChecksPlugin implements Plugin<Project> {
      @Override
      void apply(Project project) {
        project.apply plugin: 'base'
    
        def resolveFile = { filename ->
          new URL(buildscript.sourceURI.toURL(), filename)
        }
    
        project.apply from: resolveFile('configuration1.gradle')
        project.apply from: resolveFile('configuration2.gradle')
      }
    }
    

    configurationN.gradle :

    task 'checkSomething', type: CheckSomething
    

    CheckSomething

    除了放弃所有子脚本并将其作为完整的Groovy类移入之外,还有其他明智的方法吗?我不愿意将它们移动到类中,因为我想对插件项目本身应用相同的检查,如果它们需要编译,那么应用它们似乎很困难。

    1 回复  |  直到 7 年前
        1
  •  1
  •   lance-java    7 年前

    应用的脚本与插件有不同的类加载器,它不继承buildscript类加载器,因此任务不在类路径上。您可以执行以下操作:

    project.ext.CheckSomething = CheckSomething
    project.apply from: resolveFile('configuration1.gradle')
    

    看到了吗 https://discuss.gradle.org/t/buildscript-configurations-classpath-not-available-in-apply-from-scripts/1391

    推荐文章