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

gradle kotlin dsl - How to configure dependencies for subprojects

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

当我在主项目 subprojects 下创建 dependenciesbuild.gradle.kts 我收到错误 找不到名称为 'implementation' 的配置.

以下是我的配置 -

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

    subprojects {   
        dependencies {
            val implementation by configurations
            implementation(kotlin("stdlib-jdk8"))
        }
    }

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

代码已开启 github

添加以下配置对我有用

  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"))
    }
  }

使用 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 插件,但是一旦在根目录中定义,就无需在其他子项目中指定版本)