class MyPlugin : Plugin<Project> {
override fun apply(target: Project) {
// Required build script configurations for the project.
}
}
在dsl的build.gradle.kts中添加:
plugins {
// ...
`java-gradle-plugin`
}
gradlePlugin {
plugins {
create("my-plugin") {
id = "my-plugin"
implementationClass = "MyPlugin"
}
}
}
// ...
dependencies {
// Replace with everything has been configured at the second step.
implementation("group:projectName:version")
}
型 1.在main的settings.gradle.kts中添加:
includeBuild("../shared")
includeBuild("../dsl")
在main的build.gradle.kts中添加:
plugins {
// ...
id("my-plugin")
}
// ...
dependencies {
// Replace with everything has been configured at the second step.
implementation("group:projectName:version")
}
3条答案
按热度按时间3bygqnnd1#
受@breandan的回答启发,我认为这样更好:
字符串
s1ag04yj2#
您可以将
buildSrc
中的共享类添加到您的应用程序类路径中,如下所示:字符串
正如@lance-java提到的,你还应该添加一个编译依赖项:
型
最后,如果一个类需要使用从
org.gradle.api
导入的内容,请将这一行添加到dependencies
中:型
ssgvzors3#
除了描述如何通过直接指向共享类来包含共享类的答案之外,我还想展示如何以模块化的方式解决相同的问题。通过使用Gradle模块(composite builds),至少可以获得以下好处:
1.更好的模块化和可重用性:共享类保存在单独的Gradle模块中,可以独立存储和更新(例如,在另一个Git存储库中)。
1.更严格的封装:可以利用Kotlin中
internal
可见性修改器的特性,不需要知道要共享的源位于何处,不需要以类似sourceSets
的方式手动包含资源。1.改进的性能:不需要为每个要使用的地方编译共享类。
1.在共享类的本地编译和发布工件之间切换的简单性:请参阅相应的Gradle文档。
如何配置?
1.创建3个项目:main-用于主应用,dsl-用于构建脚本,shared-用于共享类。可以使用IDE的向导,只要确保每个创建的项目都是自给自足的(拥有自己的
settings.gradle.kts
)。1.确保shared在其
settings.gradle.kts
和build.gradle.kts
文件中分配了一些group
、rootProject.name
和version
。这些属性的设置非常重要,因为我们将使用它们将该项目作为依赖项包含在内。1.在dsl的
settings.gradle.kts
中添加:在同一个dsl项目中,创建并声明一些插件,这些插件将完成构建脚本的工作。在
dsl/src/main/kotlin/
内部创建:在dsl的
build.gradle.kts
中添加:型
1.在main的
settings.gradle.kts
中添加:在main的
build.gradle.kts
中添加:型
恭喜您,您已经获得了在构建脚本(dsl)和主应用(main)中使用的共享项目的源!