2017-09-05 7 views
6

मेरे निर्माण फ़ाइल इस तरह दिखता है:कैसे ext पाने के लिए * प्लगइन्स में चर build.gradle.kts में ब्लॉक

val nexusBaseUri: String by extra 
val gradle_version: String by extra 
val kotlin_version: String by extra 

buildscript { 
    val nexusBaseUri by extra { "https://mynexusserver/nexus" } 
    val gradle_version by extra { "4.1" } 
    val kotlin_version by extra { "1.1.4-3" } 
    val springBoot_version by extra { "2.0.0.M3" } 

    repositories { 
     maven { url = uri("$nexusBaseUri/repository/public") } 
     jcenter() 
     maven { url = uri("http://repo.spring.io/snapshot") } 
     maven { url = uri("http://repo.spring.io/milestone") } 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBoot_version") 
     classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") 
     classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") 
    } 
} 

plugins { 
    application 
    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 
    // the following line causes a problem 
    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 
    kotlin("jvm", kotlin_version) 
} 

apply { 
    plugin("kotlin-spring") 
    plugin("org.springframework.boot") 
    plugin("io.spring.dependency-management") 
} 

application { 
    mainClassName = "eqip.fid.FdmlInterpreterDeveloperAppKt" 
} 

repositories { 
    maven { url = uri("$nexusBaseUri/content/groups/public") } 
    jcenter() 
    maven { url = uri("http://repo.spring.io/snapshot") } 
    maven { url = uri("http://repo.spring.io/milestone") } 
} 

dependencies { 
    compile(kotlin("stdlib")) 
    compile("org.springframework.boot:spring-boot-starter-web") 
} 

tasks { 
    "wrapper"(Wrapper::class) { 
     gradleVersion = gradle_version 
    } 
} 

त्रुटि मैं IntelliJ विचार में मिलता है

'वैल kotlin_version है : स्ट्रिंग 'को इस संदर्भ में निहित रिसीवर द्वारा नहीं कहा जा सकता है। यदि आवश्यक हो तो स्पष्ट एक का उपयोग करें

मैं इसे कैसे ठीक करूं?

+2

आप उस अनुभाग में चर का उपयोग नहीं कर सकते हैं बदलने के लिए होगा। इस प्रश्न को पहले से ही एक जवाब के साथ स्टैक ओवरफ्लो पर पूछा गया था, अगर कोई और इसे पार करता है तो बस यहां जवाब देना चाहता था। https://stackoverflow.com/a/37749402/559536 – Alex

उत्तर

2

आप plugins के अंदर एक संस्करण को परिभाषित कर सकते हैं और फिर यह संस्करण ब्लॉग के बाहर सुलभ बना सकते हैं, उदा। dependencies अनुभाग में।

plugins { 
    kotlin("jvm").version("1.1.61") 
} 

//This is necessary to make the version accessible in other places 
val kotlinVersion: String? by extra { 
    buildscript.configurations["classpath"] 
      .resolvedConfiguration.firstLevelModuleDependencies 
      .find { it.moduleName == "kotlin-gradle-plugin" }?.moduleVersion 
} 

dependencies { 
    compile(kotlin("stdlib", kotlinVersion)) 
} 

संस्करण 1.2+ के लिए, आप के साथ kotlin-gradle-pluginorg.jetbrains.kotlin.jvm.gradle.plugin

+0

बहुत अच्छा लग रहा है, लेकिन मेरे लिए 'शून्य' देता है:/ – Xerus

+0

@Xerus आप किस संस्करण का उपयोग कर रहे हैं? – s1m0nw1

+1

1.2.20, सबसे हाल का संस्करण। मॉड्यूलनाम अब 'org.jetbrains.kotlin.jvm.gradle.plugin' लगता है - जब मैं इसका उपयोग करता हूं तो यह फिर से काम करता है – Xerus

संबंधित मुद्दे