1818import org .gradle .api .plugins .JavaPluginExtension ;
1919import org .gradle .api .tasks .SourceSet ;
2020import org .gradle .api .tasks .SourceSetContainer ;
21- import org .gradle .api .tasks .compile .CompileOptions ;
2221import org .gradle .api .tasks .compile .ForkOptions ;
2322import org .gradle .api .tasks .compile .JavaCompile ;
2423import org .gradle .api .tasks .javadoc .Javadoc ;
2524import org .gradle .api .tasks .testing .Test ;
26- import org .gradle .jvm .toolchain .JavaLanguageVersion ;
2725import org .gradle .jvm .toolchain .JavaToolchainService ;
2826
2927/**
@@ -56,70 +54,62 @@ public void apply(Project project) {
5654 final SourceSet mainSourceSet = sourceSets .getByName ( SourceSet .MAIN_SOURCE_SET_NAME );
5755 final SourceSet testSourceSet = sourceSets .getByName ( SourceSet .TEST_SOURCE_SET_NAME );
5856
59- final JavaCompile mainCompileTask = (JavaCompile ) project .getTasks ().getByName ( mainSourceSet .getCompileJavaTaskName () );
60- final JavaCompile testCompileTask = (JavaCompile ) project .getTasks ().getByName ( testSourceSet .getCompileJavaTaskName () );
61- final Test testTask = (Test ) project .getTasks ().findByName ( testSourceSet .getName () );
62-
63- if ( !jdkVersionsConfig .isExplicitlyConfigured () ) {
64- mainCompileTask .setSourceCompatibility ( jdkVersionsConfig .getMainReleaseVersion ().toString () );
65- mainCompileTask .setTargetCompatibility ( jdkVersionsConfig .getMainReleaseVersion ().toString () );
66-
67- testCompileTask .setSourceCompatibility ( jdkVersionsConfig .getTestReleaseVersion ().toString () );
68- testCompileTask .setTargetCompatibility ( jdkVersionsConfig .getTestReleaseVersion ().toString () );
69- }
70- else {
57+ if ( jdkVersionsConfig .getMain ().isExplicit () ) {
7158 javaPluginExtension .getToolchain ().getLanguageVersion ().set ( jdkVersionsConfig .getMainCompilerVersion () );
72-
73- configureCompileTasks ( project );
74- configureTestTasks ( project );
75- configureJavadocTasks ( project , mainSourceSet );
76-
77- configureCompileTask ( mainCompileTask , jdkVersionsConfig .getMainReleaseVersion () );
78- configureCompileTask ( testCompileTask , jdkVersionsConfig .getTestReleaseVersion () );
79-
80- testCompileTask .getJavaCompiler ().set (
81- toolchainService .compilerFor ( javaToolchainSpec -> {
82- javaToolchainSpec .getLanguageVersion ().set ( jdkVersionsConfig .getTestCompilerVersion () );
83- } )
84- );
85- if ( testTask != null ) {
86- testTask .getJavaLauncher ().set (
87- toolchainService .launcherFor ( javaToolchainSpec -> {
88- javaToolchainSpec .getLanguageVersion ().set ( jdkVersionsConfig .getTestLauncherVersion () );
89- } )
90- );
91- }
9259 }
93- }
9460
95- private void configureCompileTask ( JavaCompile compileTask , JavaLanguageVersion releaseVersion ) {
96- final CompileOptions compileTaskOptions = compileTask . getOptions ( );
97- compileTaskOptions . getRelease (). set ( releaseVersion . asInt () );
61+ configureCompileTasks ( project , mainSourceSet , testSourceSet , jdkVersionsConfig );
62+ configureTestTasks ( project , jdkVersionsConfig );
63+ configureJavadocTasks ( project , mainSourceSet , jdkVersionsConfig );
9864 }
9965
100- private void configureCompileTasks (Project project ) {
66+ private void configureCompileTasks (Project project , SourceSet mainSourceSet , SourceSet testSourceSet , JdkVersionConfig jdkVersionsConfig ) {
67+ final JavaCompile mainCompileTask = (JavaCompile ) project .getTasks ().getByName ( mainSourceSet .getCompileJavaTaskName () );
68+ final JavaCompile testCompileTask = (JavaCompile ) project .getTasks ().getByName ( testSourceSet .getCompileJavaTaskName () );
69+
70+ mainCompileTask .getOptions ().getRelease ().set ( jdkVersionsConfig .getMainReleaseVersion ().asInt () );
71+ testCompileTask .getOptions ().getRelease ().set ( jdkVersionsConfig .getTestReleaseVersion ().asInt () );
72+
10173 project .getTasks ().withType ( JavaCompile .class ).configureEach ( new Action <JavaCompile >() {
10274 @ Override
10375 public void execute (JavaCompile compileTask ) {
10476 addJvmArgs ( compileTask ,
10577 project .property ( "toolchain.compiler.jvmargs" ).toString ().split ( " " )
10678 );
107- compileTask .doFirst (
108- new Action <Task >() {
109- @ Override
110- public void execute (Task task ) {
111- project .getLogger ().lifecycle (
112- "Compiling with '{}'" ,
113- compileTask .getJavaCompiler ().get ().getMetadata ().getInstallationPath ()
114- );
79+ if ( jdkVersionsConfig .getMain ().isExplicit ()
80+ && compileTask .getName ().equals ( mainSourceSet .getCompileJavaTaskName () ) ) {
81+ compileTask .getJavaCompiler ().set (
82+ toolchainService .compilerFor ( javaToolchainSpec -> {
83+ javaToolchainSpec .getLanguageVersion ().set ( jdkVersionsConfig .getMainCompilerVersion () );
84+ } )
85+ );
86+ }
87+ else if ( jdkVersionsConfig .getTest ().isExplicit ()
88+ && compileTask .getName ().equals ( testSourceSet .getCompileJavaTaskName () ) ) {
89+ compileTask .getJavaCompiler ().set (
90+ toolchainService .compilerFor ( javaToolchainSpec -> {
91+ javaToolchainSpec .getLanguageVersion ().set ( jdkVersionsConfig .getTestCompilerVersion () );
92+ } )
93+ );
94+ }
95+ if ( jdkVersionsConfig .isExplicit () ) {
96+ compileTask .doFirst (
97+ new Action <Task >() {
98+ @ Override
99+ public void execute (Task task ) {
100+ project .getLogger ().lifecycle (
101+ "Compiling with '{}'" ,
102+ compileTask .getJavaCompiler ().get ().getMetadata ().getInstallationPath ()
103+ );
104+ }
115105 }
116- }
117- );
106+ );
107+ }
118108 }
119109 } );
120110 }
121111
122- private void configureTestTasks (Project project ) {
112+ private void configureTestTasks (Project project , JdkVersionConfig jdkVersionsConfig ) {
123113 project .getTasks ().withType ( Test .class ).configureEach ( new Action <Test >() {
124114 @ Override
125115 public void execute (Test testTask ) {
@@ -135,33 +125,45 @@ public void execute(Test testTask) {
135125 )
136126 );
137127 }
138- testTask .doFirst (
139- new Action <Task >() {
140- @ Override
141- public void execute (Task task ) {
142- project .getLogger ().lifecycle (
143- "Testing with '{}'" ,
144- testTask .getJavaLauncher ().get ().getMetadata ().getInstallationPath ()
145- );
128+ if ( jdkVersionsConfig .getTest ().isExplicit () ) {
129+ testTask .getJavaLauncher ().set (
130+ toolchainService .launcherFor ( javaToolchainSpec -> {
131+ javaToolchainSpec .getLanguageVersion ()
132+ .set ( jdkVersionsConfig .getTestLauncherVersion () );
133+ } )
134+ );
135+ }
136+ if ( jdkVersionsConfig .isExplicit () ) {
137+ testTask .doFirst (
138+ new Action <Task >() {
139+ @ Override
140+ public void execute (Task task ) {
141+ project .getLogger ().lifecycle (
142+ "Testing with '{}'" ,
143+ testTask .getJavaLauncher ().get ().getMetadata ().getInstallationPath ()
144+ );
145+ }
146146 }
147- }
148- );
147+ );
148+ }
149149 }
150150 } );
151151 }
152152
153- private void configureJavadocTasks (Project project , SourceSet mainSourceSet ) {
153+ private void configureJavadocTasks (Project project , SourceSet mainSourceSet , JdkVersionConfig jdkVersionsConfig ) {
154154 project .getTasks ().named ( mainSourceSet .getJavadocTaskName (), Javadoc .class , (task ) -> {
155155 task .getOptions ().setJFlags ( javadocFlags ( project ) );
156- task .doFirst ( new Action <Task >() {
157- @ Override
158- public void execute (Task t ) {
159- project .getLogger ().lifecycle (
160- "Generating javadoc with '{}'" ,
161- task .getJavadocTool ().get ().getMetadata ().getInstallationPath ()
162- );
163- }
164- } );
156+ if ( jdkVersionsConfig .isExplicit () ) {
157+ task .doFirst ( new Action <Task >() {
158+ @ Override
159+ public void execute (Task t ) {
160+ project .getLogger ().lifecycle (
161+ "Generating javadoc with '{}'" ,
162+ task .getJavadocTool ().get ().getMetadata ().getInstallationPath ()
163+ );
164+ }
165+ } );
166+ }
165167 } );
166168 }
167169
0 commit comments