使用gradle从包含依赖关系的cucumber / groovy测试创建uberJar

时间:2016-03-21 02:33:43

标签: gradle groovy uberjar

我在{project_home} / src / test / groovy /

中进行了一些功能测试

我希望能够使用gradle任务:

  1. 从{project_home} / src / test / groovy /下的所有.groovy文件中创建一个jar文件,包括所有依赖项

  2. 能够运行此jar文件作为运行单个groovy文件的替代

  3. 我遇到的所有例子都有一个主方法,我没有main()

    所以我尝试使用“Project”的build.gradle并附加

    task fatJar(type: Jar) {
        baseName = project.name + '-all'
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
        with jar
    }
    

    并运行$gradle clean fatJar

    但编译失败了:

    :Tests:EndToEndFunctionalTests:fatJar FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':Tests:EndToEndFunctionalTests:fatJar'.
    > archive contains more than 65535 entries.
    
      To build this archive, please enable the zip64 extension.
      See: https://docs.gradle.org/2.7/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:zip64
    

    我在/ build / libs

    下有jar文件

1 个答案:

答案 0 :(得分:3)

task uberJar(type: Jar,dependsOn:[':compileGroovy']) {
    zip64 true
    from files(sourceSets.main.output.classesDir)
    from configurations.runtime.asFileTree.files.collect {zipTree(it) }
    with jar

}

解决了这个问题。