gradle kotlin dsl - 如何为子项目配置依赖项

Raj*_*jan 6 gradle gradle-kotlin-dsl

我正在为 kotlin 编程创建 gradle 多项目。

当我在主项目dependencies 下创建时,我收到错误Configuration with name 'implementation' not foundsubprojectsbuild.gradle.kts

以下是我的配置 -

    plugins {
        kotlin("jvm") version "1.3.61" apply false
    }

    subprojects {   
        dependencies {
            val implementation by configurations
            implementation(kotlin("stdlib-jdk8"))
        }
    }
Run Code Online (Sandbox Code Playgroud)

一旦我将插件和依赖项移动到子项目 build.gradle.kts 中,它就可以正常工作。如何使依赖项subprojects正常工作?

代码在github 上

Syl*_*are 8

使用 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"
       }
   }

}
Run Code Online (Sandbox Code Playgroud)

(您仍然需要拥有 kotlin 插件,但是一旦在根目录中定义,则无需在其他子项目中指定版本)

  • 经过几个小时的尝试使其全部运行后,这对我有所帮助..谢谢@sylhare!但是,我仍然不能将 `implementation` 不带引号,因为 Gradle 报告错误:“未解析的引用:实现”;为了使其运行,我必须在“依赖项{}”声明之前添加“通过配置实现val” (2认同)