我在Gradle中有以下多项目结构:
- root-project
- acceptance-tests
- sub-java-proj
acceptance-tests
有一个任务cucumber
(由Gradle Cucumber-plugin提供),它运行项目中的Cucumber功能。但是,我需要在运行功能之前进行一些引导。特别是,在cucumber
任务之前,Gradle应执行以下操作:
sub-java-proj
中运行测试,如果他们通过则生成其jar文件(如果没有失败)accentance-tests/proglib
我对Gradle完全陌生,所以我不确定如何正确实现这一点。我的第一个想法是让acceptance-tests
依赖sub-java-proj
(使用testRuntime配置),但我觉得这是滥用依赖机制:这样做的唯一原因是确保sub-java-proj
是在acceptance-tests
运行之前编译的,但实际上这也是acceptance-tests
的类路径通过添加来自sub-java-proj
的jar而混淆的,并且还存在传递依赖的问题。简而言之:acceptance-tests
除了复制它之外,不应该有任何来处理sub-java-proj
。
非常感谢有关如何实现这一目标的建议。
到目前为止,我在acceptance-tests/build.gradle
中有以下内容:
task fix(dependsOn: ':sub-java-proj:jar', type: Copy) {
from tasks.getByPath(':sub-java-proj:jar')
to 'proglib'
}
task unfix(type: Delete) {
delete fix
}
cucumber.dependsOn fix
cucumber.finalizedBy unfix
但是,除了unfix还删除了proglib
目录之外,这也有效。它应该只删除jar文件。任何想法如何解决这个问题?