提问者:小点点

Windows Gradle构建:无法展开ZIP


我正在开发一个MapReduce应用程序,目前正在使用Gradle来构建项目。我正在使用以下依赖项,当我执行时。/gradlew清洁构建我得到无法扩展ZIP错误。

implementation 'org.apache.hive:hive-jdbc:3.1.3'
implementation 'org.apache.hadoop:hadoop-common:3.3.2'
implementation 'org.apache.hadoop:hadoop-hdfs:3.3.2'

堆栈跟踪

 Could not expand ZIP 'C:\Users\..\.gradle\caches\modules-2\files-2.1\org.apache.curator\apache-curator\2.12.0\b1ff6ce0741facb15217ae9254ee7167bc7b15e\apache-curator-2.12.0.pom'.


org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':jar'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)

我尝试清除gradle cachegradlew cleBuildCache--刷新依赖项,但没有成功。


共1个答案

匿名用户

我能够解决这个问题。我的目标是创建一个脂肪罐,为此我更新了gradlejar任务来创建一个脂肪jar。

jar {
    manifest {
        attributes "Main-Class": "main.Main"
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

问题是,在C:\用户\…\. gradle\cache\…文件夹中有一些没有.jar文件的依赖项。在我的例子中只有一个.pom文件。所以我删除了任务并创建了一个新任务(自定义FatJar)只是为了获得。jar文件。这解决了问题。

修复:

task customFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'main.Main'
    }
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    from {
        configurations.runtimeClasspath.filter {
            it.name.endsWith('.jar')
        }
    }
    with jar
}