API 文件 | IdeaModule |
---|
啟用微調 IDEA 外掛的模組詳細資訊 (*.iml 檔案)。
混合使用大多數可能屬性的範例。通常您不必直接設定此模型,因為 Gradle 會為您設定。
plugins { id 'java' id 'idea' } //for the sake of this example, let's introduce a 'performanceTestCompile' configuration configurations { performanceTestCompile performanceTestCompile.extendsFrom(testCompile) } dependencies { //performanceTestCompile "some.interesting:dependency:1.0" } idea { //if you want parts of paths in resulting files (*.iml, etc.) to be replaced by variables (Files) pathVariables GRADLE_HOME: file('~/cool-software/gradle') module { //if for some reason you want to add an extra sourceDirs sourceDirs += file('some-extra-source-folder') //and some extra test source dirs testSources.from(file('some-extra-test-dir')) //and some extra resource dirs resourceDirs += file('some-extra-resource-dir') //and some extra test resource dirs testResources.from(file('some-extra-test-resource-dir')) //and hint to mark some of existing source dirs as generated sources generatedSourceDirs += file('some-extra-source-folder') //and some extra dirs that should be excluded by IDEA excludeDirs += file('some-extra-exclude-dir') //if you don't like the name Gradle has chosen name = 'some-better-name' //if you prefer different output folders inheritOutputDirs = false outputDir = file('muchBetterOutputDir') testOutputDir = file('muchBetterTestOutputDir') //if you prefer different SDK than the one inherited from IDEA project jdkName = '1.6' //put our custom test dependencies onto IDEA's TEST scope scopes.TEST.plus += [ configurations.performanceTestCompile ] //if 'content root' (as IDEA calls it) of the module is different contentRoot = file('my-module-content-root') //if you love browsing Javadoc downloadJavadoc = true //and hate reading sources :) downloadSources = false } }
為了處理邊緣案例,使用者可以對產生的 XML 檔案執行進階設定。也可以透過 beforeMerged 和 whenMerged 閉包來影響 IDEA 外掛合併現有設定的方式。
beforeMerged 和 whenMerged 閉包接收 Module
參數
進階設定範例
plugins { id 'java' id 'idea' } idea { module { iml { //if you like to keep *.iml in a secret folder generateTo = file('secret-modules-folder') //if you want to mess with the resulting XML in whatever way you fancy withXml { def node = it.asNode() node.appendNode('iLoveGradle', 'true') node.appendNode('butAlso', 'I find increasing pleasure tinkering with output *.iml contents. Yeah!!!') } //closure executed after *.iml content is loaded from existing file //but before gradle build information is merged beforeMerged { module -> //if you want skip merging exclude dirs module.excludeFolders.clear() } //closure executed after *.iml content is loaded from existing file //and after gradle build information is merged whenMerged { module -> //you can tinker with Module } } } }
屬性 | 說明 |
contentRoot | 模組的內容根目錄。 |
downloadJavadoc | 是否下載並新增與依賴 JAR 相關聯的 Javadoc。預設為 false。 |
downloadSources | 是否下載並新增與依賴 JAR 相關聯的原始碼。預設為 true。 |
excludeDirs | 要排除的目錄。 |
generatedSourceDirs | 包含產生來源的目錄(生產和測試來源)。 |
iml | |
inheritOutputDirs | 如果為 true,此模組的輸出目錄將位於專案的輸出目錄下方;否則,它們將設定為 |
jdkName | 用於此模組的 JDK。如果 |
languageLevel | 用於此模組的模組特定語言等級。當 |
name | 設定模組名稱,即 *.iml 檔案的名稱。 |
outputDir | 生產類別的輸出目錄。如果 |
outputFile | 設定輸出 *.iml 檔案。它是選用的,因為任務應該為您正確設定它(包括確保它在多模組建置中是唯一的)。如果您真的需要變更輸出檔名(或模組名稱),透過moduleName屬性來執行會容易得多! |
resourceDirs | 包含資源的目錄。 |
scopes | 此映射的鍵是 IDEA 範圍。每個鍵指向另一個具有兩個鍵(plus 和 minus)的映射。這些鍵的值是 |
sourceDirs | 包含生產來源的目錄。例如,請參閱 |
targetBytecodeVersion | 用於此模組的模組特定位元組碼版本。當 |
testOutputDir | 測試類別的輸出目錄。如果 |
testResourceDirs | 已過時 包含測試資源的目錄。 |
testResources | 測試資源目錄的完整且最新的集合。這應該優先於 |
testSourceDirs | 已過時 包含測試來源的目錄。請注意,預設測試目錄的後期變更可能不會反映在此集合中,並且應優先使用 |
testSources | 測試來源目錄的完整且最新的集合。這應該優先於 |
方法 | 說明 |
iml(action) | 啟用進階設定,例如修改輸出 XML 或影響現有 *.iml 內容與 Gradle 建置資訊合併的方式。 |
區塊 | 說明 |
iml | 啟用進階設定,例如修改輸出 XML 或影響現有 *.iml 內容與 Gradle 建置資訊合併的方式。 |
IdeaModuleIml
iml
(唯讀)
Boolean
inheritOutputDirs
如果為 true,此模組的輸出目錄將位於專案的輸出目錄下方;否則,它們將設定為 IdeaModule.getOutputDir()
和 IdeaModule.getTestOutputDir()
指定的目錄。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 null
- 使用
idea
和java
外掛的預設值 null
String
jdkName
用於此模組的 JDK。如果 null
,則使用現有或預設 ipr XML (繼承) 的值。如果設定為 inherited
,則使用專案 SDK。否則,此模組使用對應 Java 版本的 SDK。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 'inherited'
IdeaLanguageLevel
languageLevel
用於此模組的模組特定語言等級。當 null
時,模組將繼承 IDEA 專案的語言等級。
Idea 模組語言等級基於關聯 Gradle 專案的 sourceCompatibility
設定。
- 使用
idea
和java
外掛的預設值 project.sourceCompatibility
String
name
設定模組名稱,即 *.iml 檔案的名稱。
它是選用的,因為任務應該為您正確設定它。預設情況下,它會嘗試使用 project.name 或在前面加上 project.path 的一部分,以確保模組名稱在多模組建置的範圍內是唯一的。模組名稱的「唯一性」是正確匯入 IDEA 所必需的,並且任務將確保名稱是唯一的。
since 1.0-milestone-2
如果您的專案在唯一名稱方面遇到問題,建議始終從根目錄執行 gradle idea
,即針對所有子專案。如果您僅針對單個子專案執行 IDEA 模組的產生,則可能會得到不同的結果,因為唯一名稱是根據特定建置執行中涉及的 IDEA 模組計算的。
如果您更新模組名稱,請確保從根目錄執行 gradle idea
,例如針對所有子專案,包括 IDEA 專案的產生。原因是可能存在依賴於已修改模組名稱的子專案。因此,您也希望產生它們,因為模組依賴項需要參考已修改的專案名稱。基本上,對於非簡單專案,建議始終從根目錄執行 gradle idea
。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 ${project.name}
(有時在前面加上${project.path}
的部分以保證唯一性)
File
outputDir
生產類別的輸出目錄。如果 null
,則不會建立任何項目。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 null
- 使用
idea
和java
外掛的預設值 null
File
outputFile
設定輸出 *.iml 檔案。它是選用的,因為任務應該為您正確設定它(包括確保它在多模組建置中是唯一的)。如果您真的需要變更輸出檔名(或模組名稱),透過moduleName屬性來執行會容易得多!
請參閱有關 moduleName 屬性的文件。在 IntelliJ IDEA 中,模組名稱與 *.iml 檔案的名稱相同。
- 使用
idea
外掛的預設值 - #name +
'.iml'
包含資源的目錄。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - 來自
project.sourceSets.main.resources
的資源目錄
Map
<String
, Map
<String
, Collection
<Configuration
>>>
scopes
Map
<String
, Map
<String
, Collection
<Configuration
>>>此映射的鍵是 IDEA 範圍。每個鍵指向另一個具有兩個鍵(plus 和 minus)的映射。這些鍵的值是 Configuration
物件的集合。加上配置的檔案會被新增,減去減去配置的檔案。請參閱以下範例...
如何使用 scopes 屬性在輸出 *.iml 檔案中啟用 'performanceTestCompile' 依賴項的範例
plugins { id 'java' id 'idea' } configurations { performanceTestCompile performanceTestCompile.extendsFrom(testCompile) } dependencies { //performanceTestCompile "some.interesting:dependency:1.0" } idea { module { scopes.TEST.plus += [ configurations.performanceTestCompile ] } }
- 使用
idea
外掛的預設值 [:]
- 使用
idea
和java
外掛的預設值 -
COMPILE
->project.configurations.compileClasspath
RUNTIME
->project.configurations.runtimeClasspath - project.configurations.compileClasspath
TEST
->project.configurations.testRuntimeClasspath - project.configurations.runtimeClasspath
PROVIDED
包含生產來源的目錄。例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - project.sourceSets.main.allJava
JavaVersion
targetBytecodeVersion
用於此模組的模組特定位元組碼版本。當 null
時,模組將繼承 IDEA 專案的位元組碼版本。
Idea 模組位元組碼版本基於關聯 Gradle 專案的 targetCompatibility
設定。
- 使用
idea
和java
外掛的預設值 project.targetCompatibility
File
testOutputDir
測試類別的輸出目錄。如果 null
,則不會建立任何項目。
例如,請參閱 IdeaModule
的文件
- 使用
idea
外掛的預設值 null
- 使用
idea
和java
外掛的預設值 null
注意:此屬性已過時,將在 Gradle 的下一個主要版本中移除。
包含測試資源的目錄。
例如,請參閱 IdeaModule
的文件 此欄位已 @Deprecated
,請改用 IdeaModule.getTestResources()
。
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - 來自
project.sourceSets.test.resources
的資源目錄
ConfigurableFileCollection
testResources
(唯讀)
測試資源目錄的完整且最新的集合。這應該優先於 IdeaModule.getTestResourceDirs()
,因為它將包含預設目錄的後期變更。
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - 基於可用測試套件中的資源
注意:此屬性已過時,將在 Gradle 的下一個主要版本中移除。
包含測試來源的目錄。請注意,預設測試目錄的後期變更可能不會反映在此集合中,並且應優先使用 IdeaModule.getTestSources()
。 例如,請參閱 IdeaModule
的文件 此欄位已 @Deprecated
,請改用 IdeaModule.getTestSources()
。
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - project.sourceSets.test.allJava
ConfigurableFileCollection
testSources
(唯讀)
測試來源目錄的完整且最新的集合。這應該優先於 IdeaModule.getTestSourceDirs()
,因為它將包含預設目錄的後期變更。
- 使用
idea
外掛的預設值 []
- 使用
idea
和java
外掛的預設值 - 基於可用測試套件中的來源目錄
void
iml
(Action
<? super IdeaModuleIml
>
action)
Action
<? super IdeaModuleIml
>啟用進階設定,例如修改輸出 XML 或影響現有 *.iml 內容與 Gradle 建置資訊合併的方式。
例如,請參閱 IdeaModule
的文件。