【问题标题】:Is a .gradle file in buildSrc folder a plugin for projects?buildSrc 文件夹中的 .gradle 文件是项目的插件吗?
【发布时间】:2021-08-15 19:02:00
【问题描述】:

我在gradle官网学习gradle:

https://docs.gradle.org/current/userguide/declaring_dependencies_between_subprojects.html

在这里,在一个示例中,它在 buildSrc 文件夹中有一个文件-

buildSrc/src/main/kotlin/myproject.java-conventions.gradle.kts

plugins {
    id("java")
}

group = "com.example"
version = "1.0"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation("junit:junit:4.13")
}

项目的结构是:

.
├── buildSrc
│   ...
├── api
│   ├── src
│   │   └──...
│   └── build.gradle.kts
├── services
│   └── person-service
│       ├── src
│       │   └──...
│       └── build.gradle.kts
├── shared
│   ├── src
│   │   └──...
│   └── build.gradle.kts
└── settings.gradle.kts

模块构建脚本 api/build.gradle.ktsshared/build.gradle.kts 正在使用插件 'myproject.java-conventions' 作为:

plugins {
    id("myproject.java-conventions")
}

我在下面提到了如何创建自定义插件。

https://www.tutorialspoint.com/gradle/gradle_plugins.htm#:~:text=Plugin%20is%20nothing%20but%20set,are%20handled%20by%20plugins.&text=Extend%20the%20basic%20Gradle%20model,elements%20that%20can%20be%20configured)。

我很困惑在 buildSrc 中只有一个 .gradle 或 .gradle.kts 文件是一个项目能够使用的插件。而且,如果是这样,他们为什么不将其用作:

应用插件:myproject.java-conventions

那么应用插件apply plugin: myproject.java-conventions

有什么区别
plugins {
    id("myproject.java-conventions")
}

【问题讨论】:

    标签: java gradle build.gradle gradle-plugin


    【解决方案1】:

    是的,myproject.java-conventions.gradle.kts 文件是一个 gradle 插件。具体来说,它是precompiled script plugin。所有子模块都可以使用这个插件,因为packaging a pluginbuildSrc 项目中,

    Gradle 将负责...使其在构建脚本的类路径中可用。该插件对构建使用的每个构建脚本都是可见的。

    plugins 块只是一种应用插件的新方法。见:What's the difference in applying gradle plugins?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2022-01-10
      • 2022-06-30
      • 1970-01-01
      • 2021-10-24
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多