当前位置: 首页 > 知识库问答 >
问题:

格雷德尔克茨。如何将依赖项配置从主生成移到一个单独的文件中?

王嘉木
2023-03-14
applyFrom("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

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

版本和相关信息:

    null

当我在主文件中有依赖项时,我的构建工作得很好。所有必要的配置(buildscript、插件、存储库等)都有,但为了简洁,这里省略了。

共有1个答案

谷光誉
2023-03-14

这里有几件事:

>

  • 我假设在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")
    

    dependencies.kts应重命名为dependencies.gradle.kts(以及引用)

    该文件本身缺少一些设置(buildscript存储库,可能还有插件)。

    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里程碑repo;您可能使用的是稳定的/以前的版本。相应地调整。

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

  •  类似资料:
    • 我面临着这个问题 我验证了我的系统已经安装了gradle,并且具有所有读写权限。 这个错误有什么具体原因吗? 已检查此链接

    • 我正在使用“maven”插件将Gradle构建创建的工件上传到Maven中央存储库。我正在使用类似于以下任务的任务: 然而,此任务创建的POM文件不能正确报告在我的Gradle构建文件中被排除的依赖项。例如: 如何在生成的POM文件中正确管理排除的依赖项?

    • 我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过

    • 我有一个由gradle建造的战争项目。我有一个字符串gradle.build文件:编译'log4j: log4j: 1.2.17'但没有任何log4j.jar结果WEB-INF/lib目录在myproject.war文件。 但“compile”配置中定义的所有其他lib都存在。为什么会有如此奇怪的行为,它是一个bug还是某种功能?如何将其包含在我的网络档案中? Eclipse在项目的“网络应用程序

    • 在学习gradle时,我似乎是Java的构建工具。但我不明白依赖到底是什么。Gradle中的依赖项部分到底是什么意思?它有什么用途?