2014-02-10 19 views
8

IntelliJ如何知道目錄是「源」還是「測試源」?我怎樣才能始終將目錄標記爲「測試來源」?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,搖籃1.9

+0

這裏是如何做到這一點很容易:stackoverflow.com/a/36057080/715269 – Gangnus

+0

@Gangnus,這個問題是關於如何根據Gradle中的配置自動確定源類型**。 –

+0

看起來像IntelliJ在版本2016.1中添加了對自定義源集的支持。 –

回答

0

「如何的IntelliJ知道,如果一個目錄是一個 '源' 或 '測試 源'?」

Gradle API告訴IntelliJ哪些目錄被標記爲源,哪些被標記爲測試源。

關於你提到的例子:

  1. 所有清楚這裏,源和測試源。
  2. awesome-test源集定義爲src/awesome-test/java作爲源。由於測試源路徑包含源路徑,因此此處不存在衝突。和gradle/IntelliJ正確標記爲src/awesome-test/java
  3. awesome-test sourceset被添加到測試任務,所以顯然它不被用作源,因此將其標記爲測試源。

希望它有幫助。

+0

雖然我可以用它來重新設計我的項目結構,以便與13.0.2中引入的新行爲一起工作(13.0.1似乎已將構思配置中的內容看作真相),但我更願意告訴IntelliJ 「這個」目錄是一個「測試」目錄。有時候我需要定義一個用於設置測試的源代碼集,但不能作爲測試運行。 –

+0

你有關於這方面的文件的任何鏈接嗎? –

+0

您是否正在嘗試使用某種自定義測試框架來支持您的測試?如果你能更好地解釋上下文,可能會有所幫助。主要文檔來源是[Gradle用戶指南](http://www.gradle.org/docs/current/userguide/java_plugin.html)和StackOverflow。 – kukido

0

在過去,IntelliJ使用IdeaModel配置來設置源和測試目錄。根據我打開的IntelliJ Ticket,我相信IntelliJ 13.1.0將再次使用IdeaModel配置。

相關問題