1
1
package org.akhikhl.gretty.internal.integrationTests
2
2
3
+ import org.gradle.api.Action
3
4
import org.gradle.api.JavaVersion
5
+ import org.gradle.api.Plugin
4
6
import org.gradle.api.Project
5
7
import org.gradle.api.Task
6
8
import org.gradle.api.tasks.SourceSet
@@ -11,14 +13,31 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion
11
13
import org.slf4j.Logger
12
14
import org.slf4j.LoggerFactory
13
15
14
- class JavaToolchainIntegrationTestPlugin extends BasePlugin {
16
+ import java.util.function.Consumer
17
+
18
+ class JavaToolchainIntegrationTestPlugin implements Plugin<Project > {
19
+ public static final String PLUGIN_ID = " org.gretty.internal.integrationTests.JavaToolchainIntegrationTestPlugin"
15
20
private static final Logger log = LoggerFactory . getLogger(IntegrationTestPlugin )
16
21
17
- protected void configureExtensions (Project project ) {
22
+ static void applyPluginConditionally (Project project ) {
18
23
if (project. findProperty(' toolchainJavaVersion' )) {
19
- defineToolchainDSL( project, Integer . parseInt( " ${ project.toolchainJavaVersion } " ))
24
+ project. apply plugin : PLUGIN_ID
20
25
}
21
26
}
27
+
28
+ static void whenApplied (Project project , Consumer<JavaToolchainIntegrationTestPlugin > config ) {
29
+ project. plugins. withId(PLUGIN_ID , new Action<Plugin > () {
30
+ @Override
31
+ void execute (Plugin plugin ) {
32
+ config. accept((JavaToolchainIntegrationTestPlugin ) plugin)
33
+ }
34
+ })
35
+ }
36
+
37
+ @Override
38
+ void apply (Project project ) {
39
+ defineToolchainDSL(project, Integer . parseInt(" ${ project.toolchainJavaVersion} " ))
40
+ }
22
41
23
42
private void defineToolchainDSL (Project project , int javaVersion ) {
24
43
project. java {
@@ -28,27 +47,23 @@ class JavaToolchainIntegrationTestPlugin extends BasePlugin {
28
47
}
29
48
}
30
49
31
- public static void forceSourceSetToUseGradleJvm (Project project , SourceSet sourceSet ) {
32
- if (isPluginApplied(project)) {
33
- project. tasks. named(sourceSet. getCompileTaskName(' java' )). configure({ forceTaskToUseGradleJvm(it) })
34
- project. tasks. named(sourceSet. getCompileTaskName(' groovy' )). configure({ forceTaskToUseGradleJvm(it) })
35
- }
50
+ public void forceSourceSetToUseGradleJvm (Project project , SourceSet sourceSet ) {
51
+ project. tasks. named(sourceSet. getCompileTaskName(' java' )). configure({ forceTaskToUseGradleJvm(it) })
52
+ project. tasks. named(sourceSet. getCompileTaskName(' groovy' )). configure({ forceTaskToUseGradleJvm(it) })
36
53
}
37
54
38
- public static void forceTaskToUseGradleJvm (Task task ) {
55
+ public void forceTaskToUseGradleJvm (Task task ) {
39
56
task. project. with { proj ->
40
- if (isPluginApplied(proj)) {
41
- if (task instanceof JavaCompile ) {
42
- task. javaCompiler. value(proj. javaToolchains. compilerFor(gradleJvmSpec))
43
- }
57
+ if (task instanceof JavaCompile ) {
58
+ task. javaCompiler. value(proj. javaToolchains. compilerFor(gradleJvmSpec))
59
+ }
44
60
45
- if (task instanceof GroovyCompile ) {
46
- task. javaLauncher. value(proj. javaToolchains. launcherFor(gradleJvmSpec))
47
- }
61
+ if (task instanceof GroovyCompile ) {
62
+ task. javaLauncher. value(proj. javaToolchains. launcherFor(gradleJvmSpec))
63
+ }
48
64
49
- if (task instanceof Test ) {
50
- task. javaLauncher. value(proj. javaToolchains. launcherFor(gradleJvmSpec))
51
- }
65
+ if (task instanceof Test ) {
66
+ task. javaLauncher. value(proj. javaToolchains. launcherFor(gradleJvmSpec))
52
67
}
53
68
}
54
69
}
@@ -64,13 +79,20 @@ class JavaToolchainIntegrationTestPlugin extends BasePlugin {
64
79
return JavaVersion . current()
65
80
}
66
81
82
+ public static void skipIrrelevantTasks (Task task ) {
83
+ task. project. with {
84
+ if (task. project. findProperty(' toolchainJavaVersion' )) {
85
+ task. enabled = false
86
+ }
87
+
88
+ whenApplied(task. project) {
89
+ task. enabled = true
90
+ }
91
+ }
92
+ }
93
+
67
94
private static def getGradleJvmSpec () {
68
95
def gradleJvmVerson = Integer . valueOf(getGradleJavaVersion(). getMajorVersion())
69
96
return { languageVersion = JavaLanguageVersion . of(gradleJvmVerson) }
70
97
}
71
-
72
- private static boolean isPluginApplied (Project project ) {
73
- return project. plugins. hasPlugin(JavaToolchainIntegrationTestPlugin . class) ||
74
- project. plugins. hasPlugin(JavaToolchainIntegrationTestPlugin . class. name)
75
- }
76
98
}
0 commit comments