java - Spring Boot 和 Gradle 多模块项目,未能正确加载依赖项

标签 java spring-boot gradle spring-boot-gradle-plugin

基本上我有一个使用 Gradle 构建的 spring boot 项目。 该项目有一个根项目,其中包含另外 4 个子模块。 根项目 settings.gradle 如下所示:

rootProject.name = 'proj'

include 'proj-app'
include 'proj-integration-tests'
include 'proj-model'
include 'proj-service'

应用模块包含 spring-boot-gradle-plugin 并公开了一些 api。

我想做的是创建仅包含集成测试的 proj-integration-tests 子模块。问题从这里开始,因为我需要 proj-app 依赖项。

所以在 proj-integration-tests 中,我有包含以下内容的 build.gradle:

dependencies {
  testCompile('org.springframework.boot:spring-boot-starter-web')
  testCompile('org.springframework.boot:spring-boot-starter-test')
  testCompile project(':proj-app')
  testCompile project(':proj-model')
}

自集成测试以来,我需要 proj-app 依赖项:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ProjApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

需要启动位于 proj-app 模块中的 Spring boot 应用程序(ProjApplication.class)。

我从 Gradle 得到的错误是:“找不到符号 ProjApplication”。

为什么 Gradle 无法正确管理 proj-app 依赖项? 提前致谢;)

最佳答案

似乎 proj-app 依赖项是以 spring boot 时尚方式构建的。这意味着获得的工件是一个可执行的 spring boot far jar。这就是为什么 proj-integration-tests 在编译时无法从 proj-app 中找到类的原因。 因此,为了维护可执行 jar,并使 proj-app 作为 proj-integration-tests 模块中的依赖项,我修改了 proj app 的 build.gradle 以创建两个 jar:以 spring boot 方式和标准版:

bootJar {
baseName = 'proj-app-boot'
enabled = true
}

jar {
baseName = 'proj-app'
enabled = true
}

关于java - Spring Boot 和 Gradle 多模块项目,未能正确加载依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029812/

相关文章:

android - 程序类型已经存在 : android. support.v4.app.NavUtils 消息

java - 我们可以调试 rt.jar 中存在的类吗?

java - Prometheus:针对某种情况发出警报的最佳方式是什么?

java - 日志记录 - Log4j2 日志记录问题

java - Rest API 请求参数和路径变量

eclipse - 如何在Eclipse中将来自Maven Central等的库添加到现有的非Gradle,非Maven项目

java - Swing,当 BoxLayout 空间受限时,实现组件环绕到下一行

java - 如何将项目添加到 Android Studio 的抽屉导航模板并为其设置监听器?

java - 尝试将 spring data mongo 存储库与 Stream 一起使用时出现异常

java - 在 Android Studio 中将外部 Android 和 Java 项目添加到 Android 项目