使用Spring启动应用程序实现Gradle多项目依赖性

时间:2018-03-20 10:14:45

标签: spring-boot gradle gradle-plugin

我有如下弹簧启动项目结构:

client-stp-grid-publisher:
+---.build.gradle
+---.client-stp-grid-publisher-acceptance
|   +---build.gradle
+---.client-stp-grid-publisher-core
|   +---build.gradle

client-stp-grid-publisher-acceptance需要task ':client-stp-grid-publisher-core:bootRepackage'创建的可执行jar来启动进程 在运行验收测试之前测试完整流程。所以我正在运行bootRepackage task核心项目,然后复制可执行jar 到acceptance-test project build/tmp directory

验收测试也使用项目':client-stp-grid-publisher-core'中的一些类。

task ':client-stp-grid-publisher-core:bootRepackage'首先执行task ':client-stp-grid-publisher-acceptance:test' 一些测试失败,使用来自核心项目的类。

如果我将核心项目构建限制为distZip task,那么接受项目下的所有测试都会通过。

使用bootRepackage运行验收测试时出错:

failure message="java.lang.NoClassDefFoundError: Lcom/markets/efx/client/stp/builder/GridDealsObjectBuilder;" 
type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: Lcom/markets/efx/client/stp/builder/GridDealsObjectBuilder

但我的需求需要bootRepackage,以便我可以从验收测试项目运行可执行jar。

如果我能获得有关如何解决问题的建议或某些解决方法以达到要求,那将会非常有用吗? 谢谢,

1 个答案:

答案 0 :(得分:0)

您不必手动复制罐子。

settings.gradle:

include 'client-stp-grid-publisher'
include 'client-stp-grid-publisher-acceptance'
include 'client-stp-grid-publisher-core'

build.gradle for'client-stp-grid-publisher-acceptance'

...
dependencies {
    compile project(":client-stp-grid-publisher-core")
    ...

我建议您阅读使用gradle设置多模块项目: https://spring.io/guides/gs/multi-module/