Java Spring boot和Gradle多模块项目未能正确加载依赖项

Java Spring boot和Gradle多模块项目未能正确加载依赖项,java,spring-boot,gradle,spring-boot-gradle-plugin,Java,Spring Boot,Gradle,Spring Boot Gradle Plugin,基本上我有一个用Gradle构建的spring boot项目。 该项目有一个根项目,其中包含另外4个子模块。 根项目设置.gradle如下所示: rootProject.name = 'proj' include 'proj-app' include 'proj-integration-tests' include 'proj-model' include 'proj-service' 应用程序模块包含SpringBootGradle插件,并公开了一些api 我想做的是创建只包含集成测试的项

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

rootProject.name = 'proj'

include 'proj-app'
include 'proj-integration-tests'
include 'proj-model'
include 'proj-service'
应用程序模块包含SpringBootGradle插件,并公开了一些api

我想做的是创建只包含集成测试的项目集成测试子模块。问题从这里开始,因为我需要proj应用程序依赖项

因此,在项目集成测试中,我有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应用程序依赖性:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ProjApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
需要启动位于proj应用程序模块中的Spring引导应用程序(ProjApplication.class)

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

为什么Gradle无法正确管理proj应用程序依赖关系?
提前感谢;)

项目应用程序依赖项似乎是以spring boot方式构建的。这意味着获得的工件是一个可执行的spring boot far jar。这就是proj集成测试在编译时无法从proj app中找到类的原因。
因此,为了维护可执行jar,并将proj app作为proj集成测试模块中的依赖项,我修改了proj app中的build.gradle以创建两个jar:以spring引导方式和标准版本:

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

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

ProjApplication
是否在一个包中?我假设您看到的错误是在编译集成测试时,对吗?
ProjApplication
在默认包中,这意味着它对包中的类不可见,或者应用程序的JAR没有被添加到
存档
配置中。另外,为什么不在
proj应用程序
中进行集成测试?然后,在集成测试运行之前,您不必等待应用程序打包。尽管这取决于集成测试的性质。proj应用程序位于proj应用程序包下。是的,你是对的,这个错误是在编译集成测试时抛出的。IDE似乎没有对此抱怨,但当我从cli构建项目时,会出现错误。我希望有一个只包含集成测试的不同模块,因为测试人员也可以访问此模块,我认为这样做更好。好的,很公平。那么,你用的是什么版本的Gradle?集成测试是否在proj集成测试/src/test/java下?您是否在集成测试项目中运行
gradle测试
?运行
gradle:proj集成测试:依赖项--configuration testCompileClasspath
时是否显示项目依赖项?