我有一个 gradle 多项目,其中我的 war 文件构建在一个子项目中,而我的集成测试在另一个子项目中。我已经读过 gretty 应该能够启动一个码头实例,让我在构建期间运行集成测试,但我无法弄清楚如何将 gretty integrationTestTask 任务“连接”到我的其他子项目中的任务,从那里实际测试将运行。
我的项目结构如下所示:
root/
int-test/
build.gradle
web/
build.gradle
build.gradle
settings.gradle
文件内容
根/settings.gradle:
include ':web'
include ':int-test'
根/build.gradle:
apply plugin: 'java'
根/web/build.gradle:
apply plugin: 'war'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
gretty {
contextPath = '/'
integrationTestTask = 'intTests'
}
task intTests << {
println 'This task will run in just the right time'
}
根/int-test/build.gradle:
apply plugin: 'java'
task intTests << {
println 'All integration testing is done in here'
}
当我运行“./gradlew -q intTests”时,输出如下:
所有的集成测试都在这里完成 2014-12-11 15:37:02.046 信息 - 记录已初始化 @1157ms 2014-12-11 15:37:02.554 信息 - jetty-9.2.3.v20140905 2014-12-11 15:37:02.682 警告 - ServletContainerInitializers:检测到。类层次结构:空 2014-12-11 15:37:03.114 信息 - 启动 oagJettyWebAppContext@7da22e4a{/,文件:/Users/fredrik/callista/dev/grettyfitnesse/web/build/inplaceWebapp/,可用} 2014-12-11 15:37:03.130 信息 - 已启动 ServerConnector@2590ae17{HTTP/1.1}{0.0.0.0:8080} 2014-12-11 15:37:03.130 信息 - 开始 @2245ms 2014-12-11 15:37:03.137 警告 - Jetty 9.2.3.v20140905 已启动并监听端口 8080 2014-12-11 15:37:03.158 警告 - 运行于: 2014-12-11 15:37:03.159 警告 - http://localhost:8080/ 此任务将在正确的时间运行 2014-12-11 15:37:03.221 信息 - 停止 ServerConnector@2590ae17{HTTP/1.1}{0.0.0.0:8080} 2014-12-11 15:37:03.229 信息 - 停止 oagJettyWebAppContext@7da22e4a{/,文件:/Users/fredrik/callista/dev/grettyfitnesse/web/build/inplaceWebapp/,不可用} 2014-12-11 15:37:03.232 警告 - 码头 9.2.3.v20140905 已停止。 服务器停止。
因此,web 项目中的 intTests 任务将在正确的时刻运行,但 int-test 项目中的 intTests 任务将运行得早(在 web 服务器启动之前)。我该如何设置,以便 gretty 插件“连接”到我的 int-test 项目中定义的 intTests 任务?
我尝试过的事情: * 设置“integrationTestTask = ':int-test:intTests'”希望足以指定 gretty 应该在哪个子项目中寻找正确的任务。结果 - 码头甚至没有启动。* 在根 build.gradle 中创建 intTests 任务,尝试在 int-test 中扩展该任务。结果 - 没有区别。* 在 web 项目的 intTests 任务中添加了一个 dependsOn(":int-test:intTests")。结果 - 没有区别