java - IntelliJ 如何知道目录是 'source' 还是 'test source'?

标签 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 会再次被标记为“test”来源'。

注释:IntelliJ 13.0.2,Gradle 1.9

最佳答案

"How does IntelliJ know if a directory is a 'source' or a 'test source'?"

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

关于你的例子:

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

希望对您有所帮助。

关于java - IntelliJ 如何知道目录是 'source' 还是 'test source'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21686930/

相关文章:

java - 获取有关特定内存泄漏的更多详细信息

java - 为什么允许抽象类 "DocumentBuilderFactory"实例化新实例

java - 如何在 Cucumber 报告中为所采取的每项操作嵌入屏幕截图?

maven - 高效的Karaf开发流程

docker - Gitlab 的 CI docker 在 docker 登录和测试容器中

java - ByteBuffer 和 ByteArrayInputStream 相同的底层 byte[]

JavaFX Tableview 按升序对底部为 null 的 java.sql.Date 列进行排序

java - 如何设置 IntelliJ IDEA 以使用参数 -Xlint :unchecked? 编译代码

android - IntelliJ Idea 新建安卓应用项目失败

node.js - 使用 intellij 远程调试 nodejs