想法“Groovyc:无法解析类” - 在命令行上工作

时间:2013-12-18 04:54:03

标签: java groovy intellij-idea gradle spock

我在Intellij Idea中有一个包含两个模块的gradle项目:

foo-core
    |--src
    |   |--main
    |   |   |--java
    |--build.gradle
foo-test
    |--src
    |   |--test
    |   |   |--groovy
    |--build.gradle
build.gradle
settings.gradle

foo-test包含一个spock测试,它应该从foo-core测试一个类。当我尝试在IntelliJ Idea的foo-test中运行测试时,出现以下错误:

Groovyc: unable to resolve class ...

但是当我使用gradle :foo-test:test从命令行运行它们时,一切正常。

这是我的toplevel settings.gradle:

include ':foo-core', ':foo-test'

这是来自foo-test的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
}

apply plugin: 'groovy'

sourceCompatibility = 1.7

repositories {
    mavenCentral()
}

dependencies {
    compile project(':foo-core')
    compile "org.codehaus.groovy:groovy-all:2.2.1"
    compile "com.google.inject:guice:3.0"

    testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

foo-test的项目依赖关系在Idea中是正确的。当我“刷新所有Gradle项目”时,正确导入任何更改的依赖项。

我已经尝试清理Idea中的所有缓存。

为什么我可以在命令行中使用gradle运行测试,但无法在IntelliJ Idea中编译它们?

更新:评论问题的答案
创意版13

我在Idea中创建了一个Android Gradle项目,并通过创建目录+ gradle文件并在顶层“settings.gradle”中添加它们来添加更多模块。然后我在Idea中做了一个“刷新所有Gradle项目”。我不使用gradle idea插件。

源和测试目录由Idea识别。所有项目设置似乎都在Idea(从gradle)中正确导入。我可以在另一个java项目(foo-core)中使用foo-ui中的java类,但不能在groovy文件中使用它们。

只是在IntelliJ中编译不起作用。完全重建也不起作用。甚至“刷新所有Gradle项目”也会产生Groovyc错误。

此外,当我只有两个模块(foo-uifoo-test)时,测试已经有效,但在将一些类移动到新模块(foo-core)后停止工作。 / p>

更新2:我现在已更新至Idea 13.0.1。我还尝试关闭项目,删除所有.iml文件和“构建”目录并再次导入。两者都不起作用。

1 个答案:

答案 0 :(得分:0)

事实上,这是IntelliJ Idea的一个错误:http://youtrack.jetbrains.com/issue/IDEA-117676

使用IntelliJ Idea 13.0.2和Gradle 1.9,一切正常。