java - buildSrc 文件夹中的 .gradle 文件是项目的插件吗?
问题描述
我在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.kts和shared/build.gradle.kts使用插件“myproject.java-conventions”作为:
plugins {
id("myproject.java-conventions")
}
我在下面提到了如何创建自定义插件。
我很困惑在 buildSrc 中只有一个 .gradle 或 .gradle.kts 文件是一个项目能够使用的插件。而且,如果是这样,他们为什么不将其用作:
应用插件:myproject.java-conventions
apply plugin: myproject.java-conventions
应用插件和应用插件有什么区别
plugins {
id("myproject.java-conventions")
}
解决方案
是的,该myproject.java-conventions.gradle.kts
文件是一个 gradle 插件。具体来说,它是一个预编译脚本插件。所有子模块都可以使用这个插件,因为通过在项目中打包一个插件,buildSrc
Gradle 将负责...使其在构建脚本的类路径中可用。该插件对构建使用的每个构建脚本都是可见的。
该plugins
块只是一种应用插件的新方法。请参阅:应用 gradle 插件有什么区别?
推荐阅读
- sql - 我有一个包含每月数据的表。如何使用从该表中选择查询来平均每个季度的数据
- sql - 我收到“子查询返回超过 1 个值”,但我的 SELECT 上没有子查询
- terminal - 如何解决在本机脚本中锁定 user.settings 的超时问题?
- excel - 如何使用“查找”作为第一行和最后一行来查看值、匹配值并将相邻单元格复制到另一个工作簿?
- java - java - 如何在基于类的注释中声明事务bean?
- swift - 无需使用 inout 进行缓存的 Swift 动态编程
- sql - MariaDB 结果集未返回正确结果
- java - Spring boot JPA Hibernate 返回嵌套的 Json 对象:Reddit 风格的评论系统
- sqlite - 编程时sqlite和mysql有区别吗
- python - Python os.path.dirname("path") 错误 - 当路径以“/”终止时不返回父目录