将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项目导入另一个插件错误的主要内容,如果未能解决你的问题,请参考以下文章