我创建了一个包含多个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
答案 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