Градл КТС. Как перенести конфигурацию зависимостей в отдельный файл из основной сборки?
Я пытаюсь создать модульный скрипт сборки в 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
- Котлин версия для проекта: 1.1.2.5
Моя сборка работает отлично, когда у меня есть зависимости в основном файле. Все необходимые конфигурации (buildscript, плагины, репозитории и т. Д.) Присутствуют, но здесь для краткости опущены.
1 ответ
Пара вещей здесь:
Я предполагаю, что у вас ничего нет внутри
build.gradle.kts
ноapplyFrom("dependencies.kts")
; если это так, вам все еще нужноbuildscript
а также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")) } } 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")
dependencies.kts
следует переименовать вdependencies.gradle.kts
(а также ссылка)- В зависимости от используемой версии Gradle
kotlinModule("stdlib-jre8")
может быть уже устарела;kotlin("stdlib-jre8")
используется в самой последней. Вам не хватает еще некоторых настроек в этом файле (
buildscript
,repositories
и потенциально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.M2
иmilestone
репо (с); Возможно, вы используете стабильную / предыдущую версию. Твик соответственно.
Взгляните на поддержку языка Kotlin для скриптов сборки Gradle для некоторых примеров; они немного отличаются от того, что вы делаете здесь, но у вас может быть требование делать подобные вещи.