在构建逻辑构建示例中共享惯例插件
版本 8.14
您可以在支持 Gradle 的 IDE 中打开此示例。 |
此示例展示了如何在 buildSrc 中共享并向生产代码和构建逻辑代码应用惯例插件。
让我们使用以下项目结构:
项目结构
├── application
│ ├── src
│ │ └── main
│ └── build.gradle.kts
├── build-conventions
│ ├── src
│ │ ...
│ ├── build.gradle.kts
│ └── settings.gradle.kts
├── buildSrc
│ ├── src
│ │ ...
│ └── build.gradle.kts
├── list
│ ├── src
│ │ ...
│ └── build.gradle.kts
├── utilities
│ ├── src
│ │ ...
│ └── build.gradle.kts
└── settings.gradle.kts
项目结构
├── application
│ ├── src
│ │ └── main
│ └── build.gradle
├── build-conventions
│ ├── src
│ │ ...
│ ├── build.gradle
│ └── settings.gradle
├── buildSrc
│ ├── src
│ │ ...
│ └── build.gradle
├── list
│ ├── src
│ │ ...
│ └── build.gradle
├── utilities
│ ├── src
│ │ ...
│ └── build.gradle
└── settings.gradle
构建配置如下:
settings.gradle.kts
rootProject.name = "sample"
includeBuild("build-conventions")
include("application", "utilities", "list")
settings.gradle
rootProject.name = 'sample'
includeBuild 'build-conventions'
include 'application', 'utilities', 'list'
共享的惯例插件 myproject.java-conventions
在一个名为 build-conventions
的包含构建中实现。然后,如上文所示,该构建被包含在根项目的 settings 文件中。有关包含构建的更多详情,请参阅复合构建章节。
然后,myproject.java-conventions
插件被应用于 buildSrc
构建:
buildSrc/build.gradle.kts
plugins {
id("myproject.java-conventions")
`kotlin-dsl`
}
repositories {
// for kotlin-dsl plugin
gradlePluginPortal()
}
buildSrc/build.gradle
plugins {
id 'myproject.java-conventions'
id 'groovy-gradle-plugin'
}
它也被应用于根项目的子项目:
application/build.gradle.kts
plugins {
id("myproject.java-conventions")
// myproject.greeting is implemented in the buildSrc project that has myproject.java-conventions applied as well
id("myproject.greeting")
id("application")
}
utilities/build.gradle.kts
plugins {
id("myproject.java-conventions")
id("java-library")
}
list/build.gradle.kts
plugins {
id("myproject.java-conventions")
id("java-library")
}
application/build.gradle
plugins {
id 'myproject.java-conventions'
// myproject.greeting is implemented in the buildSrc project that has myproject.java-conventions applied as well
id 'myproject.greeting'
id 'application'
}
utilities/build.gradle
plugins {
id 'myproject.java-conventions'
id 'java-library'
}
list/build.gradle
plugins {
id 'myproject.java-conventions'
id 'java-library'
}
有关编写自定义 Gradle 插件的更多详情,请查阅用户手册。