【问题标题】:Plugin error on importing gradle project into another将gradle项目导入另一个插件错误
【发布时间】: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',名称: '春云公地'

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

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

【问题讨论】:

标签: java spring-boot gradle


【解决方案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 术语中的依赖项。
猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 2016-11-28
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多