@@ -14,6 +14,7 @@ import net.minecrell.gradle.licenser.header.HeaderStyle
1414import org.gradle.internal.jvm.Jvm
1515import org.jetbrains.intellij.tasks.PublishTask
1616import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
17+ import kotlin.reflect.KClass
1718
1819buildscript {
1920 repositories {
@@ -41,19 +42,19 @@ val repoUsername: String by project
4142val repoPassword: String by project
4243val repoChannel: String by project
4344
44- val compileKotlin by tasks
45- val processResources: AbstractCopyTask by tasks
46- val test: Test by tasks
47- val runIde: JavaExec by tasks
48- val publishPlugin: PublishTask by tasks
49- val clean: Delete by tasks
45+ val compileKotlin by tasks.existing
46+ val processResources by tasks.existing< AbstractCopyTask >()
47+ val test by tasks.existing< Test >()
48+ val runIde by tasks.existing< JavaExec >()
49+ val publishPlugin by tasks.existing< PublishTask >()
50+ val clean by tasks.existing< Delete >()
5051
5152configurations {
52- " gradle-tooling-extension" { extendsFrom(" idea" () ) }
53- " jflex" ( )
54- " jflex-skeleton" ( )
55- " grammar-kit" ( )
56- " testLibs" { isTransitive = false }
53+ register( " gradle-tooling-extension" ) { extendsFrom(configurations[ " idea" ] ) }
54+ register( " jflex" )
55+ register( " jflex-skeleton" )
56+ register( " grammar-kit" )
57+ register( " testLibs" ) { isTransitive = false }
5758}
5859
5960repositories {
@@ -66,16 +67,14 @@ repositories {
6667java {
6768 sourceCompatibility = JavaVersion .VERSION_1_8
6869 targetCompatibility = JavaVersion .VERSION_1_8
70+ }
6971
70- sourceSets {
71- " gradle-tooling-extension" {
72- configurations[compileOnlyConfigurationName].extendsFrom(configurations[" gradle-tooling-extension" ])
73- }
72+ val gradleToolingExtension = sourceSets.create(" gradle-tooling-extension" ) {
73+ configurations.named<Configuration >(compileOnlyConfigurationName) {
74+ extendsFrom(configurations[" gradle-tooling-extension" ])
7475 }
7576}
76-
77- val gradleToolingExtension = java.sourceSets[" gradle-tooling-extension" ]!!
78- val gradleToolingExtensionJar = task<Jar >(gradleToolingExtension.jarTaskName) {
77+ val gradleToolingExtensionJar = tasks.register<Jar >(gradleToolingExtension.jarTaskName) {
7978 from(gradleToolingExtension.output)
8079 classifier = " gradle-tooling-extension"
8180}
@@ -97,19 +96,9 @@ dependencies {
9796 " testLibs" (" org.jetbrains.idea:mockJDK:1.7-4d76c50" )
9897 " testLibs" (" org.spongepowered:mixin:0.7-SNAPSHOT:thin" )
9998
100- // This needs to happen after build number is resolved
101- // intellij.ideaDependency.buildNumber == intellij.type-<buildnumber>
102- // gradle-tooling-extension isn't released with major intellij versions like intellij is
103- // intellij.type is typically IC
104- // build number is IC-number, so + 1 is needed to remove the -
105- afterEvaluate {
106- val gradleVersion = if (! ideaVersion.endsWith(" SNAPSHOT" )) {
107- intellij.ideaDependency.buildNumber.substring(intellij.type.length + 1 )
108- } else {
109- ideaVersion
110- }
111- " gradle-tooling-extension" (" com.jetbrains.intellij.gradle:gradle-tooling-extension:$gradleVersion " )
112- }
99+ // For non-SNAPSHOT versions (unless Jetbrains fixes this...) find the version with:
100+ // intellij.ideaDependency.buildNumber.substring(intellij.type.length + 1)
101+ " gradle-tooling-extension" (" com.jetbrains.intellij.gradle:gradle-tooling-extension:182.3684.90" )
113102}
114103
115104intellij {
@@ -138,16 +127,16 @@ publishPlugin {
138127 }
139128}
140129
141- tasks.withType<JavaCompile > {
130+ tasks.withType<JavaCompile >().configureEach {
142131 options.encoding = " UTF-8"
143132 options.compilerArgs = listOf (" -proc:none" )
144133}
145134
146- tasks.withType<KotlinCompile > {
135+ tasks.withType<KotlinCompile >().configureEach {
147136 kotlinOptions.jvmTarget = JavaVersion .VERSION_1_8 .toString()
148137}
149138
150- tasks.withType<GroovyCompile > {
139+ tasks.withType<GroovyCompile >().configureEach {
151140 options.compilerArgs = listOf (" -proc:none" )
152141}
153142
@@ -175,7 +164,6 @@ idea {
175164 }
176165}
177166
178- // License header formatting
179167license {
180168 header = file(" copyright.txt" )
181169 style[" flex" ] = HeaderStyle .BLOCK_COMMENT .format
@@ -200,18 +188,18 @@ license {
200188 )
201189
202190 tasks {
203- " gradle" {
191+ register( " gradle" ) {
204192 files = project.files(" build.gradle.kts" , " settings.gradle.kts" , " gradle.properties" )
205193 }
206- " grammars" {
194+ register( " grammars" ) {
207195 files = project.fileTree(" src/main/grammars" )
208196 }
209197 }
210198}
211199
212200// Credit for this intellij-rust
213201// https://github.com/intellij-rust/intellij-rust/blob/d6b82e6aa2f64b877a95afdd86ec7b84394678c3/build.gradle#L131-L181
214- fun generateLexer (name : String , flex : String , pack : String ) = task <JavaExec >(name) {
202+ fun generateLexer (name : String , flex : String , pack : String ) = tasks.register <JavaExec >(name) {
215203 val src = " src/main/grammars/$flex .flex"
216204 val dst = " gen/com/demonwav/mcdev/$pack "
217205 val output = " $dst /$flex .java"
@@ -234,7 +222,7 @@ fun generateLexer(name: String, flex: String, pack: String) = task<JavaExec>(nam
234222 outputs.file(output)
235223}
236224
237- fun generatePsiAndParser (name : String , bnf : String , pack : String ) = task <JavaExec >(name) {
225+ fun generatePsiAndParser (name : String , bnf : String , pack : String ) = tasks.register <JavaExec >(name) {
238226 val src = " src/main/grammars/$bnf .bnf" .replace(' /' , File .separatorChar)
239227 val dstRoot = " gen"
240228 val dst = " $dstRoot /com/demonwav/mcdev/$pack " .replace(' /' , File .separatorChar)
@@ -268,7 +256,7 @@ val generateI18nPsiAndParser = generatePsiAndParser("generateI18nPsiAndParser",
268256
269257val generateI18nTemplateLexer = generateLexer(" generateI18nTemplateLexer" , " I18nTemplateLexer" , " i18n/lang/gen/" )
270258
271- val generate = task (" generate" ) {
259+ val generate = tasks.register (" generate" ) {
272260 group = " minecraft"
273261 description = " Generates sources needed to compile the plugin."
274262 dependsOn(
@@ -283,10 +271,10 @@ val generate = task("generate") {
283271 outputs.dir(" gen" )
284272}
285273
286- java. sourceSets[ SourceSet . MAIN_SOURCE_SET_NAME ]. java.srcDir(generate)
274+ sourceSets.named< SourceSet >( " main " ) { java.srcDir(generate) }
287275
288276// Remove gen directory on clean
289- clean. delete(generate)
277+ clean { delete(generate) }
290278
291279runIde {
292280 maxHeapSize = " 2G"
@@ -297,4 +285,5 @@ runIde {
297285 }
298286}
299287
300- inline operator fun <T : Task > T.invoke (a : T .() -> Unit ): T = apply (a)
288+ inline fun <reified T : Task > TaskContainer.existing () = existing(T ::class )
289+ inline fun <reified T : Task > TaskContainer.register (name : String , configuration : Action <in T >) = register(name, T ::class , configuration)
0 commit comments