我有如下弹簧启动项目结构:
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。
如果我能获得有关如何解决问题的建议或某些解决方法以达到要求,那将会非常有用吗? 谢谢,
答案 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/