我正在尝试在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")
;如果是这样,你仍然需要一个buildscript
和plugins
块:dependencies.kts
应重命名为dependencies.gradle.kts
(以及参考)根据您使用的Gradle版本
kotlinModule("stdlib-jre8")
可能已弃用;kotlin("stdlib-jre8")
用于最近的一个 .您在该文件本身上缺少更多设置(
buildscript
,repositories
,也可能是plugins
) .有些例子,请查看Kotlin language support for Gradle build scripts;他们在这里做的事情略有不同,但你可能要求做这样的事情 .