gpt4 book ai didi

maven - 如何从非build-gradle文件访问Kotlin DSL扩展?

转载 作者:行者123 更新时间:2023-12-03 05:20:15 26 4
gpt4 key购买 nike

org.gradle.kotlin.dsl附带的Kotlin扩展很少,例如androidpublishing等。例如,对于publishing,扩展名定义如下

fun org.gradle.api.Project.`publishing`(configure: org.gradle.api.publish.PublishingExtension.() -> Unit): Unit =
(this as org.gradle.api.plugins.ExtensionAware).extensions.configure("publishing", configure)
这意味着我可以在 build.gradle.kts中调用
publishing {
// blablabla
}
就我而言,我有一个单独的文件来处理发布,该文件定义为 random.gradle.kts,位于完全随机的目录中。
在这里,我想访问此 publishing扩展名,但无法执行。
任何建议都欢迎。
再举一个例子, android也无法访问。
在我的 build.gradle.kts中,我可以访问 android,但是在我的 random.gradle.kts中,我无法执行此操作。 android扩展定义如下
val org.gradle.api.Project.`android`: com.android.build.gradle.LibraryExtension get() =
(this as org.gradle.api.plugins.ExtensionAware).extensions.getByName("android") as com.android.build.gradle.LibraryExtension

实际上,LibraryExtension也无法访问。
因此,如何将这些扩展名传递或导入到 random.gradle.kts中?

最佳答案


//build.gradle.kts tested with gradle 6.7

subprojects {
afterEvaluate {
(extensions.findByType(com.android.build.gradle.LibraryExtension::class)
?: extensions.findByType(com.android.build.gradle.AppExtension::class))?.apply {

println("Found android subproject $name")
lintOptions.isAbortOnError = false
compileSdkVersion(30)

if (this is com.android.build.gradle.AppExtension)
println("$name is an application")

if (this is com.android.build.gradle.LibraryExtension) {

val publishing =
extensions.findByType(PublishingExtension::class.java) ?: return@afterEvaluate

val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.getByName("main").java.srcDirs)
}

afterEvaluate {
publishing.apply {
val projectName = name
publications {
val release by registering(MavenPublication::class) {
components.forEach {
println("Publication component: ${it.name}")
}
from(components["release"])
artifact(sourcesJar.get())
artifactId = projectName
groupId = ProjectVersions.GROUP_ID
version = ProjectVersions.VERSION_NAME
}
}
}
}
}
}
}
}

关于maven - 如何从非build-gradle文件访问Kotlin DSL扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63840844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com