【问题标题】:Use a Spring Boot Application as a Dependency with gradle使用 Spring Boot 应用程序作为 gradle 的依赖项
【发布时间】:2019-02-07 23:04:31
【问题描述】:

我在使用 Spring Boot (2.1) 应用程序作为其他 Spring Boot 应用程序的依赖项时遇到了一些麻烦。

我知道这不是推荐的方法,但为了简单起见,我想走那条路。官方的documentation 只是展示了如何用 maven 做到这一点,而不是如何用 gradle 做到这一点。

项目A:

plugins {
    id "org.springframework.boot" version "2.1.1.RELEASE"
}

apply plugin: 'io.spring.dependency-management'

项目 B:

plugins {
    id "org.springframework.boot" version "2.1.1.RELEASE"
}

apply plugin: 'io.spring.dependency-management'

dependencies {
    compile project(':Project A')
}

然而,这会导致项目 A 的 application.properties(来自资源)在项目 b 被执行时被加载。

任何人有一些提示或可以指导我一个工作简单的例子吗?

更新:

通过添加以下内容,在构建最终的 spring boot jar 时它可以工作。不幸的是,当尝试直接在 Intellij 中执行时,问题仍然存在。

jar {
  enabled= true
    exclude("**/application.properties")
}

【问题讨论】:

    标签: java spring spring-boot gradle


    【解决方案1】:

    我假设 ProjectB 依赖于 ProjectA 因为您需要一些通用功能或服务?也许您应该先从 ProjectA 中提取一些通用模块。例如

    ProjectA-common
    ProjectA-app  (runnable application with application.properties)
    

    然后您可以在 application.properties 处导入 ProjectA-common 作为库而无需麻烦。

    如果您仍然必须包含所有 ProjectA ,您可以从属性中排除特定配置。并写一个新的来覆盖它。

    spring:
      profiles: dev
      autoconfigure:
        exclude:
           - com.example.config.ProjectAConfiguration
           - org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
    

    【讨论】:

    • 我知道这一点,这就是以前的做法。但是为了简化其他人的项目,我想消除它。
    • 如果您仍然必须包含所有 ProjectA ,您可以从属性中排除特定配置。
    • 我认为这不能解决问题。当前的问题是,还可以从库中找到 application.properties。我在构建 jar 时设法让它工作(请参阅问题中的更新),但在 Intellij 中运行它时却没有。
    • 有两种不同的方式在 Intellij 上通过“IDE run”或 Gradle 运行 spring。那么这个方法可以通过 gradle 运行吗?
    猜你喜欢
    • 2018-10-07
    • 2023-03-10
    • 2017-04-09
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2021-02-14
    • 2021-06-21
    • 2015-06-28
    相关资源
    最近更新 更多