如何在子项目中使用spring.io中的平台bom和gradle

时间:2014-08-07 11:29:50

标签: spring gradle spring-boot

我想在所有子项目中使用平台上的物料清单。 http://platform.spring.io/platform/

该文档描述了如何在单个项目中激活bom。 需要使用spring-boot插件。我们将使用spring-boot插件,但只能在一个子项目中使用。 其他项目应该只从bom中获利,但不包含" main"用于弹簧启动的类。

在根文件夹中运行gradle: gradle build ....

出了什么问题: 任务':子项目执行失败:bootRepackage'。

  

无法找到主要课程

我在互联网上没有找到任何例子。 如何与子项目共享bom并仍然主动使用spring boot?

谢谢!

更新: 我找到了答案

在父项目的build.gradle中:

子项目{
...
bootRepackage.enabled = false;
bootRun.enabled = false;
...
}

随后在子项目的build.gradle中需要spring-boot:

bootRepackage.enabled = false;
bootRun.enabled = false;

现在gradle构建正确。 此外,在根文件夹中,以下命令将bootRun委派给正确的子模块:
gradle bootRun

2 个答案:

答案 0 :(得分:0)

使用io.spring.dependency-management

即使您对Spring Boot不感兴趣,该功能的优点还是you can use Spring's dependency plugin

build.gradle.kts

plugins {
    id("io.spring.dependency-management").version("1.0.6.RELEASE")
}

subprojects {
    apply<DependencyManagementPlugin>()

    dependencyManagement {
        imports {
            mavenBom("com.amazonaws:aws-java-sdk-bom:1.11.409") // Import any bom!
        }
    }
}

现在在子项目中:

dependencies {
    implementation("com.amazonaws:aws-java-sdk-dynamodb")
}

因此,您只应用了io.spring.dependency-management,而不是整个Spring Boot插件,也无需禁用Spring Boot(看起来像是黑客)。

答案 1 :(得分:-1)

使用Spring IO Platform BOM并不要求您使用Spring Boot。 BOM确实使用Spring Boot进行了补充,但它的主要目的是提供一组策划的依赖项,这些依赖项在Spring项目中可以很好地协同工作。在依赖关系管理中使用它也意味着如果BOM已经提供,则不需要指定所需的依赖关系版本。

使用Spring Boot可以创建一个&#34;微服务&#34;样式Web应用程序,但绝不是使用Spring BOM的要求。如果您只需要在一个模块中使用Spring Boot插件,那么您应该只将它添加到该模块中。