繁体   English   中英

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

[英]gradle kotlin dsl - How to configure dependencies for subprojects

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

当我在主项目build.gradle.ktssubprojects下创建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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM