私はここでゲームに少し遅れていますが、これを使用して問題を解決します:
apply plugin: 'idea'
allprojects {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
idea {
project {
jdkName = sourceCompatibility
languageLevel = sourceCompatibility
ipr {
withXml {
def xml = """<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="\$PROJECT_DIR\$" />
<option name="gradleJvm" value="$sourceCompatibility" />
<option name="modules">
<set>
<option value="\$PROJECT_DIR\$" />
</set>
</option>
<option name="myModules">
<set>
<option value="\$PROJECT_DIR\$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>"""
def node = it.asNode()
node.append(new XmlParser().parseText(xml))
}
}
}
module {
iml {
withXml {
def root = it.asNode()
root.@'external.linked.project.id' = project.name
root.@'external.linked.project.path' = '$MODULE_DIR$'
root.@'external.root.project.path' = '$MODULE_DIR$'
root.@'external.system.id' = "GRADLE"
root.@'external.system.module.group' = project.group
root.@'external.system.module.version' = project.version
}
}
}
}
次に、を使用./gradlew idea
して、プロジェクト言語を1.8に設定するプロジェクトメタデータを生成します。編集:Gradleアイデアプラグインは、ディレクトリベース(.idea /)のメタデータではなく、ファイルベースのメタデータのみを処理します。これをディレクトリベースのメタデータを使用する既存のプロジェクトに適用する場合は、プロジェクトルートの.idea/フォルダーを吹き飛ばす必要があります。
注:jdkNameを「1.8」に設定すると、「1.8」という名前でIntellijに登録されたJavaSDKがあることを前提としています。
更新1:生成されたiprファイルには、Java 1.8の使用を示すこのブロックが含まれています(「languageLevel」および「project-jdk-name」属性に注意してください)
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-type="JavaSDK" assert-jdk-15="true" project-jdk-name="1.8">
<output url="file://$PROJECT_DIR$/out"/>
</component>
これは、[プロジェクト構造]ダイアログに表示される内容と直接対応している必要があります。
更新2:プロジェクトのロード時に、Intellijは「Gradleプロジェクトのインポート」を求めるプロンプトを表示します。何らかの理由で、これはiprファイルで構成された言語レベルを無視し、デフォルトで1.6になります。これを回避する方法は、Gradle統合を認識できるように、iprファイルと該当するimlファイルを事前に構成することです。このように、Gradleプロジェクトをインポートするように求められることはなく、言語レベルは1.8のままです。上記のコードブロックが更新され、必要な構成が含まれるようになりました。