gpt4 book ai didi

spring - 如何在 Gradle 中获取父项目的依赖版本

转载 作者:行者123 更新时间:2023-12-03 03:44:42 25 4
gpt4 key购买 nike

我有一个 Gradle 项目,我想创建一个子模块,但在构建项目时遇到了 FAILURE。

错误信息是

Execution failed for task ':child-project:compileJava'
> Could not resolve all files for configuration 'child-project:compileClasspath'.
> Could not find org.springframework.boot:spring-boot-starter:.
Required by:
project :parent-project


这是父项目 build.gradle 文件:
plugins {
id 'org.springframework.boot' version '2.3.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}

allprojects {
apply plugin: 'java'
group = 'com.test'

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
//local nexus
}
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
//other dependencies
}

这是子项目 build.gradle:
plugins {
id 'java'
}

group = 'com.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_11

dependencies {
compile 'org.springframework.boot:spring-boot-starter'

testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

请帮助,提前谢谢。

最佳答案

为了能够在没有版本的情况下指定 Spring Boot 依赖项,您需要将 Spring Boot 插件应用于所有模块。现在你只在父项目中拥有它,而不是在子项目中。

因为默认情况下,应用插件也会禁用正常的 jar 任务,而可以创建 bootJar,您需要为库更改此设置:

// Child build file
plugins {
// Note that there are no versions on the plugins in the child project as this is defined by the ones in the parent
id 'org.springframework.boot'
id 'io.spring.dependency-management'
}

bootJar {
enabled = false
}

jar {
enabled = true
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
}

或者,您也可以废弃 io.spring.dependency-management插件(以及子项目中的 org.springframework.boot 插件),而是将 Spring Boot BOM 作为平台导入:
// Child build file (alternative)
dependencies {
// Use 'platform' for making the versions in the BOM a recommendation only, and 'enforcedPlatform' for making them a requirement.
// Note that you need the version of the BOM, so I recommend putting it in a property.
implementation enforcedPlatform("org.springframework.boot:spring-boot-dependencies:2.3.0.RELEASE")

// Here you can leave out the version
implementation 'org.springframework.boot:spring-boot-starter'
}

我通常选择后一种选择,因为这允许我使用普通的 Gradle 语义。但这主要只是偏好。

(并且只是对您的构建脚本的一个小注释:不推荐使用 compile 配置。它在行中使用 compile 'org.springframework.boot:spring-boot-starter' 。您可能只是从某个地方复制/粘贴它,但您应该将其替换为 implementation 。)

关于spring - 如何在 Gradle 中获取父项目的依赖版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62384903/

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