【问题标题】:How to use the platform bom from spring.io with gradle in subprojects如何在子项目中使用 spring.io 的平台 bom 和 gradle
【发布时间】:2014-09-30 15:04:52
【问题描述】:

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

文档描述了如何在单个项目中激活 bom。 需要使用 spring-boot 插件。我们将使用 spring-boot 插件,但仅在单个子项目中。 其他项目应该只从 bom 中获利,但不会包含用于运行 spring-boot 的“main”类。

在根文件夹中运行 gradle: 梯度构建 ....

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

找不到主类

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

谢谢!

更新: 我找到了答案

在父项目的build.gradle中:

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

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

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

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

【问题讨论】:

    标签: spring gradle spring-boot


    【解决方案1】:

    使用io.spring.dependency-management

    不错的功能是you can use Spring's dependency plugin,即使您对 Spring Boot 不感兴趣。

    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(这看起来像一个 hack)。

    【讨论】:

      【解决方案2】:

      使用 Spring IO 平台 BOM 不需要您使用 Spring Boot。 BOM 确实对使用 Spring Boot 进行了补充,但它的主要目的是提供一组精选的依赖项,这些依赖项可以在您的 Spring 项目中很好地协同工作。在你的依赖管理中使用它也意味着如果 BOM 已经提供了它,你不需要指定你想要的依赖的版本。

      使用 Spring Boot 允许您创建“微服务”风格的 Web 应用程序,但绝不是必须使用 Spring BOM。如果您只需要在单个模块中使用 Spring Boot 插件,那么您应该只将其添加到该模块中。

      【讨论】:

      • 引用自:docs.spring.io/platform/docs/1.0.1.RELEASE/reference/htmlsingle" 该平台使用 Spring Boot 的 Gradle 插件在您的构建中提供依赖版本。使用插件是必要的,因为 Gradle 不提供与 Maven 内置依赖项等效的管理支持。请注意,使用 Spring Boot 的 Gradle 插件提供版本管理不需要您使用 Spring Boot 来编写应用程序。” -- 这表明你不能在不强制子模块上的 spring-boot 的情况下使用 bom
      • 抱歉,我没有意识到 Gradle 和 Maven 之间的这种区别。我通常自己坚持使用 Maven。
      猜你喜欢
      • 1970-01-01
      • 2021-06-17
      • 2018-06-20
      • 1970-01-01
      • 2021-03-08
      • 2016-09-07
      • 2020-07-19
      • 2019-05-06
      • 2021-07-23
      相关资源
      最近更新 更多