IntelliJ如何知道目录是“源”还是“测试源”?

时间:2014-02-10 20:10:23

标签: java intellij-idea gradle

IntelliJ如何知道某个目录是“来源”还是“测试来源”?如何将目录标记为“测试源”?

build.gradle 1

apply plugin: 'java'
apply plugin: 'idea'

idea {
    module {
        sourceDirs += file('src/main/java')

        testSourceDirs += file('src/awesome-test/java')
    }
}

使用“build.gradle 1”文件,src/awesome-test/java被标记为“测试源”。

build.gradle 2

apply plugin: 'java'
apply plugin: 'idea'

idea {
    module {
        sourceDirs += file('src/main/java')

        testSourceDirs += file('src/awesome-test/java')
    }
}

sourceSets {
    'awesome-test' {
        java {
            srcDir 'src/awesome-test/java'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

但是,只要添加引用此目录的源集(“build.gradle 2”),就会将src/awesome-test/java标记为“源”。

build.gradle 3

apply plugin: 'java'
apply plugin: 'idea'

idea {
    module {
        sourceDirs += file('src/main/java')

        testSourceDirs += file('src/awesome-test/java')
    }
}

sourceSets {
    'awesome-test' {
        java {
            srcDir 'src/awesome-test/java'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

task awesomeTest(type: Test) {
    testClassesDir = sourceSets.'awesome-test'.output.classesDir
    classpath += sourceSets.'awesome-test'.runtimeClasspath
}

只是为了让事情更容易理解,如果我添加Test类型的任务,那么src/awesome-test/java再次被标记为'测试源'。

注意: IntelliJ 13.0.2,Gradle 1.9

2 个答案:

答案 0 :(得分:0)

  

“IntelliJ如何知道目录是'源'还是'测试   源'?“

Gradle API告诉IntelliJ哪些目录被标记为源,哪些目录被标记为测试源。

关于你的例子:

  1. 这里全部清楚,源和测试源。
  2. awesome-test源集定义src/awesome-test/java作为来源。由于测试源路径包含源路径,因此此处不存在冲突。并且gradle / IntelliJ正确标记src/awesome-test/java作为源。
  3. awesome-test sourceset被添加到测试任务中,因此显然它没有被用作源,因此将其标记为测试源。
  4. 希望它有所帮助。

答案 1 :(得分:0)

过去,IntelliJ使用IdeaModel配置来设置源和测试目录。基于我打开的IntelliJ Ticket,我相信IntelliJ 13.1.0将再次使用IdeaModel配置。