IntelliJ无法解析gradle java cross模块测试依赖项

时间:2016-06-17 20:16:12

标签: java testing intellij-idea gradle module

IntelliJ 2016.1 Gradle 2.1

使用直接gradle在命令行上一切正常。

项目结构:

build.gradle
\module1\build.gradle
\module1\src\test\......
\module2\build.gradle
\module2\src\test\......

模块2使用模块1中的测试类.IntelliJ显示"无法解析符号"错误。 IntelliJ中的补救措施是“添加对模块的依赖”,它什么都不做。

如果我手动编辑module1_text.iml文件并添加

<orderEntry type="module" module-name="module1_test" production-on-test="" />

然后它可以工作一点。

IntelliJ是否由于某种原因无法编辑iml文件?或者是否正确配置了gradle?

我的build.gradle以下列方式包含测试代码:

testCompile project (path: ':modules:module1')

1 个答案:

答案 0 :(得分:4)

我可以按照this方法为另一个项目的测试类创建一个依赖项。

rootproject / settings.gradle:

rootProject.name = 'rootproject'
include 'module1'
include 'module2'

rootproject /的build.gradle:

task wrapper(type: Wrapper) { gradleVersion = "2.14" }


allprojects {
    repositories {
        mavenCentral()
    }
}


subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    sourceCompatibility = 1.8

    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.11'
    }
}

rootproject /模块1 /的build.gradle:

configurations {
    testArtifacts.extendsFrom testRuntime
}
task testJar(type: Jar) {
    classifier "test"
    from sourceSets.test.output
}
artifacts {
    testArtifacts testJar
}

rootproject /模块2 /的build.gradle

dependencies {
    testCompile project (path: ':module1', configuration: 'testArtifacts')
}

使用IntelliJ的gradle向导导入root项目后,一切都按预期工作。

<强>更新

  • 添加了rootproject的settings.gradle文件