gradle 如何替换已弃用的方法 [LenientConfiguration.getArtifacts(Spec)]

问题描述 投票:0回答:1

我最近正在使用 SpringFrameWork 来使用 Gradle,并遇到了编译错误:

LenientConfiguration.getArtifacts(Spec) 方法已 已弃用。这计划在 Gradle 9.0 中删除。使用一个 宽松的 ArtifactView 与一个 componentFilter 代替。有关更多信息,请参阅升级指南:link。 /Project/demo/src/main/java/com/example/demo/TodoList.java:5:错误:预期为“{” 公共类 TodoList(@Id Long id, String todolist, String Owner) {}

作为解决方案,给出了网络链接here。它似乎涵盖了我的问题,但我不明白如何解决它。我尝试将给定的代码复制到我的 build.gradle 中,但这对解决错误没有帮助。我的程序只是一个小应用程序(更多的是学习而不是实现任何目标)实现基于用户的待办事项列表。

如果您需要更多详细信息(代码片段等),请告诉我 - 谢谢。

编辑:

它指出错误发生在仅代表 Todo-List 对象的以下代码部分(这是完整的 TodoList 类):

import org.springframework.data.annotation.Id;

public class TodoList(@Id Long id, String todolist, String owner) {
}

我的 build.gradle 大部分取自我所完成的教程,(可能)最重要的部分是版本等:

// build.gradle
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.4'
    id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

repositories {
    mavenCentral()
}


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    implementation 'org.springframework.data:spring-data-jdbc'
    implementation 'com.h2database:h2'
}


tasks.named('test') {
    useJUnitPlatform()
}
java gradle deprecated
1个回答
0
投票

这里发生了两件事:来自 Gradle 的弃用警告和来自 Java 的编译器错误。

Gradle 弃用警告

LenientConfiguration.getArtifacts(Spec) 方法已被弃用。这计划在 Gradle 9.0 中删除。请使用带有 componentFilter 的宽松 ArtifactView。请参阅升级指南以获取更多信息:链接

此警告来自您正在应用的 Gradle plugins,而不是您自己的构建脚本(即不是

build.gradle
文件)。解决方案是插件开发人员修复问题并发布新版本。但请注意,截至此答案,org.springframework.bootio.spring.dependency-management的最新版本分别是3.4.0和1.1.6。而基于后者的这个问题,该问题在1.1.5版本中得到了修复。

简而言之,将您正在应用的插件升级到最新版本。如果仍然无法阻止弃用警告,请等待插件开发人员发布已修复问题的版本。

请注意,这只是一个警告,在 Gradle 9.0 发布并升级到它之前,不会导致构建失败。

Java 编译器错误

/Project/demo/src/main/java/com/example/demo/TodoList.java:5:错误:“{”预期公共类 TodoList(@Id Long id,String todolist,String Owner){}

这里看起来您正在尝试编写一个记录而不是一个普通的类。所以,应该是:

import org.springframework.data.annotation.Id;

public record TodoList(@Id Long id, String todolist, String owner) {}

注意

record
而不是
class

© www.soinside.com 2019 - 2024. All rights reserved.