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