首页 文章

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

提问于
浏览
1

我创建了一个包含几个gradle子项目的项目,包括:“app”和“tests” .

测试在其依赖项中有“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 回答

  • 2

    理想情况下,您不应该重新打包作为依赖项 . 来自the documentation

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

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

    如果您不能按照上面的建议重新安排代码,则必须配置Spring Boot的Maven和Gradle插件,以生成适合用作依赖项的单独工件 . 可执行存档不能用作依赖项,因为可执行jar格式打包BOOT-INF / classes中的应用程序类 . 这意味着当可执行jar用作依赖项时,无法找到它们 . 要生成两个工件,一个可以用作依赖项,另一个可执行,必须指定一个分类器 . 此分类器应用于可执行归档的名称,保留默认归档以用作依赖项 . 要在使用Gradle时配置exec的分类器,可以使用以下配置:bootRepackage

相关问题