我使用gradle init
将Maven项目转换为Gradle,之后gradle install
在控制台上成功运行。但是,在Eclipse gradle导入之后,我收到错误:
Archive for required library: '[...].gradle/caches/modules-2/files-2.1/org.apache.jena/apache-jena-libs/2.12.0/[some hash value]/apache-jena-libs-2.12.0.pom' in project 'myproject' cannot be read or is not a valid ZIP file
。
现在令我感到困惑的是,这个文件不是ZIP(或JAR)文件,而是.pom文件。为什么它尝试将POM打开为ZIP,我该如何解决这个问题?
我在Arch Linux上的Eclipse 4.4 Luna上使用Gradle 2.3和Gradle IDE 3.6.3。
答案 0 :(得分:7)
我最近对jboss-ejb3-1.1.5.pom有类似的问题。它看起来像是Gradle Eclipse插件中的一个错误,因为类型为pom的maven依赖项包含在.classpath文件中。我认为它应该包含.pom文件中提到的依赖项。我通过在build.gradle文件中添加hack来解决这个问题,以便在eclipse插件生成.classpath文件时不包含'.pom'文件。
eclipse {
classpath {
downloadSources = false;
// Following block of code is to remove .pom classpath entries in .classpath files
file {
whenMerged { classpath ->
Iterator i = classpath.entries.iterator()
while (i.hasNext()) {
org.gradle.plugins.ide.eclipse.model.ClasspathEntry classpathEntry = i.next()
if(classpathEntry.kind.equals('lib') && classpathEntry.path.endsWith(".pom")) {
println('Removing ' + classpathEntry + ' from classpath entry')
i.remove()
}
}
}
}
}
}
答案 1 :(得分:1)
依赖项的pom文件中的条目是否正确
<dependency>
<type>pom</type>
</dependency>
否则它将在回购中查找jar文件。
答案 2 :(得分:0)
我通过删除项目属性中的违规POM依赖项来解决这个问题 - &gt; Java Build Path
它得到了我的项目编译,我至少可以调试我的单元测试了!