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

2018-05-11  本文已影响0人  Acker飏

在使用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个方案:

// 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
上一篇 下一篇

猜你喜欢

热点阅读