java - 将gradle项目导入另一个插件时出错

标签 java spring-boot gradle

我来自 Maven 背景,对 Gradle 非常陌生。下面给出了上下文。
我有一个图书馆项目

LibraryStarter


需要导入到

LibraryUser


项目。
两者都是 spring boot 项目和 的 build.gradle图书馆用户 提示说

Could not run phased build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-6.6.1-bin.zip'. Build file 'C:\WORK\LEARN\User\LibraryStarter\build.gradle' line: 2 Error resolving plugin [id: 'org.springframework.boot', version: '2.3.4.RELEASE'] Plugin request for plugin already on the classpath must not include a version


我尝试申请 suggestion ,但没有帮助。
保留两个 build.gradle 文件以供引用。
对于 图书馆入门
plugins {
    id 'org.springframework.boot'  version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}



group = 'com.sample.library.starter'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'


repositories {
    mavenCentral()
}

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

test {
    useJUnitPlatform()
}
对于 图书馆用户
plugins {
    id 'org.springframework.boot' version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
  id 'java'
}

group = 'com.sample.library.user'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation project(":LibraryStarter")
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

test {
    useJUnitPlatform()
}
任何帮助都感激不尽。
#################### 更新 #################
按照@Onur 在评论中的要求更新了 build.gradle。但是 spring 依赖项从类路径中删除并导致类中的编译错误。
apply plugin: 'java'

group = 'com.sample.library.user'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

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

test {
    useJUnitPlatform()
}
###################### 更新 ########################
我让它工作了。但不确定我是否做得对。
中删除插件图书馆入门 并添加了以下依赖项。

implementation group: 'org.springframework', name: 'spring-context', version: "${spring_version}" implementation group: 'org.springframework.boot', name: 'spring-boot-autoconfigure', version: "${springboot_version}" implementation group: 'org.springframework.cloud', name: 'spring-cloud-context' implementation group: 'org.springframework.cloud', name: 'spring-cloud-commons'


如果您认为这是正确的方法,我可以将其发布为答案。否则我仍然愿意接受你的建议。
渴望知道处理这种情况的最佳和有效方法,而不是应用任何补丁!

最佳答案

如果你的模块结构像

root (LibraryUser)
 |__build.gradle
 |__sub-project (LibraryStarter)
    |__build.gradle
然后在根 build.gradle
plugins {
    id 'org.springframework.boot'  version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

allprojects {
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'org.springframework.boot'
}
不要在子项目中添加(删除)插件部分

关于java - 将gradle项目导入另一个插件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63950534/

相关文章:

java - 使用 Jackson 解码和反序列化其值为 Base64 编码、字符串化 JSON blob 的字段的最简单方法

spring-boot - 如何使用 Spring Boot 将目录首先放在类路径上?

java - 如何登录jsf

java - Mongodb java 3.0驱动误区

java - 为什么 Angular 不通过 POST 请求发送 cookie,即使我已将 withCredentials 设置为 true?

android - Android P错误:无法解决依赖关系问题

android - 由于Asyncstorage库中的警告,可以删除buildToolsVersion android studio吗?

java - 什么时候必须在子类中定义构造函数?

java - 如何识别被取消的 ScheduledFuture 是否真的没有被取消?

android - 如何修复重复的库 - 包名称为 'android.support.v7.appcompat' 的多个库