美文网首页
Gradle Kotlin DSL:在独特的地方定义Kotlin

Gradle Kotlin DSL:在独特的地方定义Kotlin

作者: Acker飏 | 来源:发表于2018-05-11 10:05 被阅读0次

    在使用Gradle Kotlin DSL 的过程中一直在找一种优雅的定义版本的方式

    以下是我总结的几种方案:

    1. 从插件类中提取版本:

    搜索 kotlin插件 文件中定义的版本,并将其分配给外部变量:

    import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
    
    plugins {
        kotlin("jvm") version "1.2.41"
    }
    
    //以下两种方式都可以,建议选第一种
    val kotlinVersion: String? by extra { plugins.getPlugin(KotlinPluginWrapper::class.java).kotlinPluginVersion } 
    
    val kotlinVersion: String? by extra {
        buildscript.configurations["classpath"]
                .resolvedConfiguration.firstLevelModuleDependencies
                .find { it.moduleName == "kotlin-gradle-plugin" }?.moduleVersion
    }
    

    2. 常量定义:

    在更高版本的Gradle中,不再需要指定 kotlin(stdlib|reflect|test)依赖的版本,Kotlin插件会自动配置它们。 如果想提取依赖关系到一个地方,主要有以下2个方案:

    • 定义一个想要在buildSrc/src/main/kotlin/内的对象中共享的常量,并在构建脚本中使用该对象,代码从buildSrc可用于整个脚本,包括plugins块。
    • 使用系统属性,你可以定义一个系统属性通过在gradle.properties前面加上systemProp.作为名字,你可以通过System.getProperties()访问系统属性,例如:
    // build.gradle.kts
    plugins {
      val kotlinVersion by System.getProperties()
      println("Kotlin version is $kotlinVersion")
      kotlin("jvm") version kotlinVersion
      kotlin("plugin.spring") version kotlinVersion
    }
     
    // gradle.properties
    systemProp.kotlinVersion=1.2.41
    

    相关文章

      网友评论

          本文标题:Gradle Kotlin DSL:在独特的地方定义Kotlin

          本文链接:https://www.haomeiwen.com/subject/lunxdftx.html