这是我想要完成的事情:
为 EndToEndFunctionalTests 测试构建一个 uberJar:
task uberJar(type: Jar,dependsOn:[':compileGroovy']) {
zip64 true
from files(sourceSets.main.output.classesDir)
from configurations.runtime.asFileTree.files.collect {zipTree(it) }
with jar
}
结果,我得到:
EndToEndFunctionalTests-develop.local.SNAPSHOT.jar
所以我想要做的是将其执行为:
$ java -jar EndToEndFunctionalTests-develop.local.SNAPSHOT.jar
no main manifest attribute, in EndToEndFunctionalTests-develop.local.SNAPSHOT.jar
有没有办法伪造一个 main() 并将其包含在清单中,所以这个 jar 执行。
我能够使用 cucumber runner 通过 gradle 从命令行运行黄瓜测试,但我想要的是能够运行 jar,因为:
- 我可以在任何地方运行这个 jar,因为它具有所有依赖项
- 我会缩短这些测试的运行时间,在 staging 和 qa 中,因为我只需要完成一次,然后在持续集成管道中的各种环境中运行它