gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:48:36 25 4
gpt4 key购买 nike

我正在尝试在 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

我做错了什么以及如何做对?

版本及相关信息:

  • 等级: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 block :

    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

Notice I'm using spring-boot-gradle-plugin:2.0.0.M2 and the milestone repo(s); you might be using a stable/prior version. Tweak accordingly.

看看Kotlin language support for Gradle build scripts举一些例子;它们在您在这里所做的事情上略有不同,但您可能需要做那样的事情。

关于 Gradle KTS。如何将依赖项配置从主构建移动到单独的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com