将gradle项目导入另一个插件错误

Posted

技术标签:

【中文标题】将gradle项目导入另一个插件错误【英文标题】:Plugin error on importing gradle project into another 【发布时间】:2021-01-05 02:02:11 【问题描述】:

我来自 Maven 背景,对 Gradle 非常陌生。以下是上下文。

我有一个图书馆项目

库启动器

需要导入到一个

图书馆用户

项目。

两者都是 Spring Boot 项目,LibraryUser 的 build.gradle 抱怨

无法使用 Gradle 分发运行分阶段构建操作 'https://services.gradle.org/distributions/gradle-6.6.1-bin.zip'。 构建文件 'C:\WORK\LEARN\User\LibraryStarter\build.gradle' 行:2 解析插件时出错 [id: 'org.springframework.boot',版本: '2.3.4.RELEASE'] 插件的插件请求已经在类路径上 不得包含版本

我尝试申请suggestion,但没有帮助。

保留两个 build.gradle 文件以供参考。

对于LibraryStarter

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 在 cmets 中的要求更新了 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()

######################更新########################

我让它工作了。但不确定我是否做得对。

LibraryStarter 中移除插件并添加以下依赖项。

实施组:'org.springframework',名称: 'spring-context',版本:“$spring_version”实现 组:'org.springframework.boot',名称:'spring-boot-autoconfigure', 版本:“$springboot_version” 实现组: 'org.springframework.cloud',名称:'spring-cloud-context' 实施组:'org.springframework.cloud',名称: '春云公地'

如果您认为这是正确的方法,我可以将其发布为答案。否则我仍然愿意接受您的建议。

渴望了解处理这种情况的最佳和有效方法,而不是应用任何补丁!

【问题讨论】:

您在两个项目中使用相同的依赖项。尝试将相同的依赖项放在一个共同的地方。查看***.com/questions/60070739/… 【参考方案1】:

如果你的模块结构是这样的

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'

不要在子项目中添加(删除)插件部分

【讨论】:

LibraryStarter 不是子项目。假设它是 Maven 术语中的依赖项。

以上是关于将gradle项目导入另一个插件错误的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 项目同步在导入另一个模块时失败

将 libgdx 项目导入 Eclipse 时出现 Gradle 错误

导入 Eclipse 项目后触发 Gradle 任务

如何将一个 Gradle 脚本导入另一个?

AS将一个项目导入到另一个项目中

将 Spring Boot Gradle 项目导入 Eclipse 时遇到问题