gradle和对spring-boot子项目的依赖

时间:2017-08-23 01:19:26

标签: spring-boot gradle

我创建了一个包含多个gradle子项目的项目,包括:" app"和"测试"。

测试有" app"在他们的依赖。测试使用来自" app"

的课程

当我跑步时:

./gradlew clean test build

一切正常,测试运行并通过。

但是当我跑步时:

./gradlew clean build

然后测试编译失败并显示一个类缺失的错误 - 在这种情况下它是一个spring-boot配置类。我使用--debug运行它,事实证明在失败的情况下应用程序:bootRepackage任务在测试之前执行:测试,应用程序编译生成的jar被更改,这就是无法找到类的原因。

我如何制作" ./ gradlew clean build"工作正常吗?

使用:spring-boot 1.5,gradle 4.0(以及4.1),io.spring.dependency-management插件1.0.0.RELEASE

1 个答案:

答案 0 :(得分:3)

理想情况下,不应将Spring Boot应用程序(已重新打包的东西)用作依赖项。来自the documentation

  

与war文件类似,Spring Boot应用程序不能用作依赖项。如果您的应用程序包含要与其他项目共享的类,建议的方法是将该代码移动到单独的模块中。然后,您的应用程序和其他项目可以依赖单独的模块。

如果在您的情况下无法提出建议的解决方案,那么文档将继续描述替代方案:

  

如果您无法按照上面的建议重新安排代码,则必须配置Spring Boot的Maven和Gradle插件,以生成适合用作依赖项的单独工件。可执行存档不能用作依赖项,因为可执行jar格式打包BOOT-INF / classes中的应用程序类。这意味着当可执行jar用作依赖项时,无法找到它们。

     

要生成两个工件,一个可以用作依赖项,另一个可执行,必须指定一个分类器。此分类器应用于可执行归档的名称,保留默认归档以用作依赖项。

     

要使用Gradle配置e.tblDepartment.DepartName.ToLower().Trim() == username.ToLower().Trim() or e.tblDepartment.DepartName.ToLower().Trim().equals(username.ToLower().Trim()) 的分类器,可以使用以下配置:

exec