Eclipse Gradle插件:<some pom =“”file =“”>无法读取或不是有效的ZIP文件</some>

时间:2015-02-17 12:05:38

标签: java eclipse maven gradle

我使用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。

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

它得到了我的项目编译,我至少可以调试我的单元测试了!