我希望我的 gradle 插件依赖于一些可以在 gradle 插件内部以及 android 库内部使用的通用代码。
有没有办法在 gradle 插件和 android 库之间共享纯 java/kotlin 代码?
当我尝试将模块添加到 gradle 插件时,出现“无法在项目中找到”错误...我尝试了
includeBuild
和 include
的不同组合,但它们没有解决问题...
示例:
Gradle 插件:
plugins {
`kotlin-dsl`
`java-gradle-plugin`
`maven-publish`
}
dependencies {
// fails
implementation(project(":Library:Plugin:Shared"))
//implementation(project(":library:plugin:shared"))
}
图书馆模块:
plugins {
id("com.android.library")
id("kotlin-android")
id("kotlin-parcelize")
id("maven-publish")
}
android {
// ...
}
dependencies {
api(project(":Library:Plugin:Shared"))
}
共享模块:
repositories {
mavenCentral()
}
plugins {
id("org.jetbrains.kotlin.jvm")
`java-library`
`maven-publish`
}
dependencies {
}
settings.gradle.kts:
pluginManagement {
includeBuild(File("library/plugin/gradle"))
}
include(":Library:Plugin:Shared")
project(":Library:Plugin:Shared").projectDir = file("library/plugin/shared")
include(":Library:Plugin:Gradle")
project(":Library:Plugin:Gradle").projectDir = file("library/plugin/gradle")
为此,您需要一个包含的构建。
以下是一些入门的分步说明。
设置您包含的构建项目:
myIncludedBuild
。settings.gradle.kts
文件。build.gradle.kts
文件,然后在其中应用 Java 库插件并给项目一个组。plugins {
`java-library`
}
group = "myIncludedBuildGroup"
在
myIncludedBuild/src/main/java
中写入您的共享代码
将构建包含在您的主
settings.gradle.kts
中:
includeBuild("myIncludedBuild")
现在,在您想要使用包含的构建的任何构建脚本中,使用 Maven 坐标将其添加到类路径中:
buildscript {
dependencies {
classpath("myIncludedBuildGroup:myIncludedBuild")
}
}
更好的是,使用 Java Gradle 插件 编写和配置插件,它将可以应用于您的
plugins
块中。
此外,构建代码将可用作主构建中任何项目的库,也可使用 Maven 坐标:
dependencies {
implementation("myIncludedBuildGroup:myIncludedBuild")
}