我在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-ui
和foo-test
)时,测试已经有效,但在将一些类移动到新模块(foo-core
)后停止工作。 / p>
更新2:我现在已更新至Idea 13.0.1。我还尝试关闭项目,删除所有.iml文件和“构建”目录并再次导入。两者都不起作用。
答案 0 :(得分:0)
事实上,这是IntelliJ Idea的一个错误:http://youtrack.jetbrains.com/issue/IDEA-117676
使用IntelliJ Idea 13.0.2和Gradle 1.9,一切正常。