使用gradle BOM和spring-boot(多模块应用程序)哪种方式更好

Posted

技术标签:

【中文标题】使用gradle BOM和spring-boot(多模块应用程序)哪种方式更好【英文标题】:What way is better for use gradle BOM and spring-boot(multimodular application) 【发布时间】:2019-08-25 01:12:33 【问题描述】:

我使用Gradle 来构建我的spring-boot 应用程序。我想要什么?

我有一个多模块应用程序,其中一些模块是spring-boot 应用程序。我想在父项目的 Gradle 文件中获取BOM spring 依赖项,并使用所有没有版本的库。

现在我有了下一个配置:

 buildscript 
        repositories 
            mavenCentral()
        
        dependencies 
            classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
        
    

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

我在每个模块中复制了这段代码。我读了Gradledocumentation 并看到了这个:

插件本身不会自动应用 Spring Dependency 管理插件了。相反,它确实对 Spring 做出反应 依赖管理插件被应用和配置 spring-boot-dependencies BOM(物料清单。我们将进入更多 本文稍后会详细介绍 BOM 支持。)

下面有一个例子:

plugins 
    id 'java'
    id 'com.gradle.build-scan' version '1.16'
    id 'org.springframework.boot' version '2.0.5.RELEASE'


dependencies 
    implementation 'org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE'
...

我很困惑。什么变种更好?我尝试像此文档一样更改我的代码,但出现错误:

> Could not resolve all files for configuration ':my-server:compileClasspath'.
   > Could not find org.springframework.boot:spring-boot-starter-data-jpa:.
     Required by:
         project :my-server
   > Could not find org.springframework.boot:spring-boot-starter-cache:.
     Required by:
         project :my-server
   > Could not find org.springframework.boot:spring-boot-configuration-processor:.
     Required by:
         project :my-server
   > Could not find org.hibernate:hibernate-jpamodelgen:.
     Required by:
         project :my-server
   > Could not find org.projectlombok:lombok:.
     Required by:
         project :my-server
   > Could not find org.springframework.kafka:spring-kafka:.
     Required by:
         project :my-server

【问题讨论】:

【参考方案1】:

您仍然需要为您的依赖项定义repositories。将以下行添加到您的 build.gradle。

repositories 
    mavenCentral()

【讨论】:

以上是关于使用gradle BOM和spring-boot(多模块应用程序)哪种方式更好的主要内容,如果未能解决你的问题,请参考以下文章

QueryDSL、spring-boot 和 Gradle

Gradle 5 JUnit BOM 和 Spring Boot 版本不正确

如何使用 spring-boot gradle 插件进行 proguard

Spring-boot 和 Gradle:构建时间太长 - 如何调试?

使用 Gradle、Groovy 和 spring-boot 加载失败并出现 java.lang.NoSuchFieldException:classCache

使用 spring-boot 的 assemble 创建的 jar 的 Gradle 集名称