Gradle KTS。 如何将依赖关系配置从主构建移动到单独的文件?

我试图在kotlin中创建模块化的构建脚本。 基本上主要的脚本和依赖脚本。 在build.gradle.kts我有:

applyFrom("dependencies.kts") 

并在dependencies.kts我有实际的依赖关系:

 dependencies { listOf( kotlinModule("stdlib-jre8"), // Spring boot "org.springframework.boot:spring-boot-starter-web", "org.springframework.boot:spring-boot-starter-security", "org.springframework.boot:spring-boot-starter-logging", "org.springframework.boot:spring-boot-actuator", // Spring "org.springframework.data:spring-data-mongodb", // Logging "org.slf4j:slf4j-api", "org.slf4j:jcl-over-slf4j", "ch.qos.logback:logback-classic" ).forEach { compile(it) } listOf( "org.codehaus.groovy:groovy-all", "org.springframework.boot:spring-boot-starter-test", "org.spockframework:spock-core:1.0-groovy-2.4", "org.spockframework:spock-spring:1.0-groovy-2.4" ).forEach { testCompile(it) } } 

这失败了:

 Error: Could not find method kotlinModule() for arguments [stdlib-jre8] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 

如果我尝试导入kotlinModule,则失败:

 Error:Cause: startup failed: script '/home/czar/personal/work/***/dependencies.kts': 1: unable to resolve class org.gradle.script.lang.kotlin.kotlinModule @ line 1, column 1. import org.gradle.script.lang.kotlin.kotlinModule ^ 1 error 

我做错了什么,怎么做对不对?

版本和相关信息:

  • Gradle:4.0
  • Gradle KTS:0.9.0
  • 编辑:IntelliJ U 2017.1.4
  • Kotlin插件:1.1.3 EAP
  • Kotlin项目版本:1.1.2.5

当我在主文件中有依赖关系时,我的构建完美地工作。 所有必要的配置(构建脚本,插件,存储库等)都存在,但为简洁起见,此处省略。

这里有几件事情:

  1. 我假设你没有什么内部build.gradle.kts但是applyFrom("dependencies.kts") ; 如果是这样,你仍然需要一个buildscriptplugins块:

     buildscript { repositories { //gradleScriptKotlin() mavenCentral() maven { setUrl("https://repo.spring.io/milestone") } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.M2") classpath(kotlin("gradle-plugin")) } } plugins { //id("io.spring.dependency-management") id("org.gradle.application") id("org.gradle.idea") //id("org.gradle.java") id("org.jetbrains.kotlin.jvm") version "1.1.2-5" //id("org.springframework.boot") } ... // applyFrom("dependencies.kts") 
  2. dependencies.kts应该重命名为dependencies.gradle.kts (也是参考)

  3. 根据您使用的Gradle版本, kotlinModule("stdlib-jre8")可能已被弃用; 最近使用的是kotlin("stdlib-jre8")
  4. 您在该文件本身上还缺少一些设置( buildscriptrepositories和可能的plugins )。

     buildscript { repositories { //gradleScriptKotlin() mavenCentral() maven { setUrl("https://repo.spring.io/milestone") } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.M2") classpath(kotlin("gradle-plugin")) } } apply { plugin("io.spring.dependency-management") //plugin("kotlin-jpa") //plugin("kotlin-spring") plugin("kotlin") plugin("org.springframework.boot") } repositories { //gradleScriptKotlin() mavenCentral() maven { setUrl("https://repo.spring.io/milestone") } } ... // ...your `dependencies` block here 

注意我使用了spring-boot-gradle-plugin:2.0.0.M2milestone回购(s); 您可能正在使用稳定/以前的版本。 相应地调整。

查看Kotlin语言支持Gradle构建脚本的一些示例; 他们在这里做的事情略有不同,但是你可能有这样的要求。