4

我在 {project_home}/src/test/groovy/ 中有一些功能测试

我希望能够使用 gradle 任务来:

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

  2. 能够运行这个 jar 文件来代替运行单个 groovy 文件

我遇到的所有示例都有一个 main 方法,而我没有 main()

所以我尝试使用“项目”的 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 文件

4

1 回答 1

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

}

解决了这个问题。

于 2016-04-04T16:17:20.113 回答