0

这是我想要完成的事情:

为 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,因为:

  1. 我可以在任何地方运行这个 jar,因为它具有所有依赖项
  2. 我会缩短这些测试的运行时间,在 staging 和 qa 中,因为我只需要完成一次,然后在持续集成管道中的各种环境中运行它
4

1 回答 1

0
src/main/groovy/Test.groovy

class Test{
        public static void main(String[] args){
                 println 'dummy main'
}

结果:

java -jar Serenity-develop.local.SNAPSHOT.jar
dummy main

它是可执行的,但现在我必须弄清楚我是否可以从这个类中调用 cucumber runner

于 2016-04-16T14:21:57.977 回答