![](/img/trans.png)
[英]Gradle Kotlin DSL: how to configure subprojects using typesafe api
[英]gradle kotlin dsl - How to configure dependencies for subprojects
我正在为 kotlin 编程创建 gradle 多项目。
当我在主项目build.gradle.kts
的subprojects
下创建dependencies
项时,我收到错误Configuration with name 'implementation' not found 。
以下是我的配置 -
plugins {
kotlin("jvm") version "1.3.61" apply false
}
subprojects {
dependencies {
val implementation by configurations
implementation(kotlin("stdlib-jdk8"))
}
}
一旦我将插件和依赖项移动到子项目 build.gradle.kts 中,它就可以正常工作了。 如何使subprojects
下的依赖关系正常工作?
代码在github上。
使用 Kotlin dsl,您可以添加依赖项,只要您使用apply(plugin = "org.jetbrains.kotlin.jvm")
或apply(plugin = "java")
。
这些需要是您放置dependencies { .. }
,通常位于subprojects { .. }
。
因此,这里将是一个简单的build.gradle.kts ,它将在其所有子项目中传播 kotlin 依赖项。
plugins {
kotlin("jvm") version "1.3.50"
}
repositories {
mavenCentral()
}
subprojects {
apply(plugin = "org.jetbrains.kotlin.jvm")
dependencies {
implementation(kotlin("stdlib-jdk8"))
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
}
(您仍然需要拥有 kotlin 插件,但是一旦在根目录中定义,则无需在其他子项目中指定版本)
添加以下配置对我有用
buildscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61")
}
}
subprojects {
apply(plugin = "java")
apply(plugin = "org.jetbrains.kotlin.jvm")
dependencies {
val implementation by configurations
implementation(kotlin("stdlib-jdk8"))
}
}
在您的根目录 build.gradle.kts 中,您也可以根据需要排除项目:
subprojects {
if (!project.name.contains("ios")) {
apply("${rootDir}/ktlint.gradle.kts")
apply(plugin = "org.jetbrains.kotlinx.kover")
apply(plugin = "com.diffplug.spotless")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.