我正在开发一个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--刷新依赖项
,但没有成功。
我能够解决这个问题。我的目标是创建一个脂肪罐,为此我更新了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
}