5858import org .gradle .api .component .ConfigurationVariantDetails ;
5959import org .gradle .api .component .SoftwareComponent ;
6060import org .gradle .api .file .CopySpec ;
61+ import org .gradle .api .file .Directory ;
6162import org .gradle .api .file .DirectoryProperty ;
6263import org .gradle .api .file .FileCollection ;
6364import org .gradle .api .file .RegularFileProperty ;
6465import org .gradle .api .model .ObjectFactory ;
6566import org .gradle .api .plugins .JavaLibraryPlugin ;
6667import org .gradle .api .plugins .JavaPlugin ;
6768import org .gradle .api .plugins .JavaPluginExtension ;
69+ import org .gradle .api .provider .Provider ;
6870import org .gradle .api .publish .PublishingExtension ;
6971import org .gradle .api .publish .maven .MavenPublication ;
7072import org .gradle .api .publish .maven .plugins .MavenPublishPlugin ;
@@ -170,11 +172,11 @@ private void addPopulateIntTestMavenRepositoryTask(Project project) {
170172 RuntimeClasspathMavenRepository runtimeClasspathMavenRepository = project .getTasks ()
171173 .create ("runtimeClasspathMavenRepository" , RuntimeClasspathMavenRepository .class );
172174 runtimeClasspathMavenRepository .getOutputDir ()
173- .set (new File ( project .getBuildDir (), "runtime-classpath-repository" ));
175+ .set (project .getLayout (). getBuildDirectory (). dir ( "runtime-classpath-repository" ));
174176 project .getDependencies ()
175177 .components ((components ) -> components .all (MavenRepositoryComponentMetadataRule .class ));
176178 Sync task = project .getTasks ().create ("populateTestMavenRepository" , Sync .class );
177- task .setDestinationDir (new File ( project .getBuildDir (), "test-maven-repository" ));
179+ task .setDestinationDir (project .getLayout (). getBuildDirectory (). dir ( "test-maven-repository" ). get (). getAsFile ( ));
178180 task .with (copyIntTestMavenRepositoryFiles (project , runtimeClasspathMavenRepository ));
179181 task .dependsOn (project .getTasks ().getByName (MavenRepositoryPlugin .PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME ));
180182 project .getTasks ().getByName (IntegrationTestPlugin .INT_TEST_TASK_NAME ).dependsOn (task );
@@ -188,7 +190,7 @@ private CopySpec copyIntTestMavenRepositoryFiles(Project project,
188190 RuntimeClasspathMavenRepository runtimeClasspathMavenRepository ) {
189191 CopySpec copySpec = project .copySpec ();
190192 copySpec .from (project .getConfigurations ().getByName (MavenRepositoryPlugin .MAVEN_REPOSITORY_CONFIGURATION_NAME ));
191- copySpec .from (new File ( project .getBuildDir (), "maven-repository" ));
193+ copySpec .from (project .getLayout (). getBuildDirectory (). dir ( "maven-repository" ));
192194 copySpec .from (runtimeClasspathMavenRepository );
193195 return copySpec ;
194196 }
@@ -197,29 +199,29 @@ private void addDocumentPluginGoalsTask(Project project, MavenExec generatePlugi
197199 DocumentPluginGoals task = project .getTasks ().create ("documentPluginGoals" , DocumentPluginGoals .class );
198200 File pluginXml = new File (generatePluginDescriptorTask .getOutputs ().getFiles ().getSingleFile (), "plugin.xml" );
199201 task .getPluginXml ().set (pluginXml );
200- task .getOutputDir ().set (new File ( project .getBuildDir (), "docs/generated/goals/" ));
202+ task .getOutputDir ().set (project .getLayout (). getBuildDirectory (). dir ( "docs/generated/goals/" ));
201203 task .dependsOn (generatePluginDescriptorTask );
202204 }
203205
204206 private MavenExec addGenerateHelpMojoTask (Project project , Jar jarTask ) {
205- File helpMojoDir = new File ( project .getBuildDir (), "help-mojo" );
207+ Provider < Directory > helpMojoDir = project .getLayout (). getBuildDirectory (). dir ( "help-mojo" );
206208 MavenExec task = createGenerateHelpMojoTask (project , helpMojoDir );
207209 task .dependsOn (createSyncHelpMojoInputsTask (project , helpMojoDir ));
208210 includeHelpMojoInJar (jarTask , task );
209211 return task ;
210212 }
211213
212- private MavenExec createGenerateHelpMojoTask (Project project , File helpMojoDir ) {
214+ private MavenExec createGenerateHelpMojoTask (Project project , Provider < Directory > helpMojoDir ) {
213215 MavenExec task = project .getTasks ().create ("generateHelpMojo" , MavenExec .class );
214216 task .getProjectDir ().set (helpMojoDir );
215217 task .args ("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:helpmojo" );
216- task .getOutputs ().dir (new File ( helpMojoDir , "target/generated-sources/plugin" ));
218+ task .getOutputs ().dir (helpMojoDir . map (( directory ) -> directory . dir ( "target/generated-sources/plugin" ) ));
217219 return task ;
218220 }
219221
220- private Sync createSyncHelpMojoInputsTask (Project project , File helpMojoDir ) {
222+ private Sync createSyncHelpMojoInputsTask (Project project , Provider < Directory > helpMojoDir ) {
221223 Sync task = project .getTasks ().create ("syncHelpMojoInputs" , Sync .class );
222- task .setDestinationDir (helpMojoDir );
224+ task .setDestinationDir (helpMojoDir . get (). getAsFile () );
223225 File pomFile = new File (project .getProjectDir (), "src/maven/resources/pom.xml" );
224226 task .from (pomFile , (copy ) -> replaceVersionPlaceholder (copy , project ));
225227 return task ;
@@ -231,8 +233,10 @@ private void includeHelpMojoInJar(Jar jarTask, JavaExec generateHelpMojoTask) {
231233 }
232234
233235 private MavenExec addGeneratePluginDescriptorTask (Project project , Jar jarTask , MavenExec generateHelpMojoTask ) {
234- File pluginDescriptorDir = new File (project .getBuildDir (), "plugin-descriptor" );
235- File generatedHelpMojoDir = new File (project .getBuildDir (), "generated/sources/helpMojo" );
236+ Provider <Directory > pluginDescriptorDir = project .getLayout ().getBuildDirectory ().dir ("plugin-descriptor" );
237+ Provider <Directory > generatedHelpMojoDir = project .getLayout ()
238+ .getBuildDirectory ()
239+ .dir ("generated/sources/helpMojo" );
236240 SourceSet mainSourceSet = getMainSourceSet (project );
237241 project .getTasks ().withType (Javadoc .class , this ::setJavadocOptions );
238242 FormatHelpMojoSource formattedHelpMojoSource = createFormatHelpMojoSource (project , generateHelpMojoTask ,
@@ -258,17 +262,18 @@ private void setJavadocOptions(Javadoc javadoc) {
258262 }
259263
260264 private FormatHelpMojoSource createFormatHelpMojoSource (Project project , MavenExec generateHelpMojoTask ,
261- File generatedHelpMojoDir ) {
265+ Provider < Directory > generatedHelpMojoDir ) {
262266 FormatHelpMojoSource formatHelpMojoSource = project .getTasks ()
263267 .create ("formatHelpMojoSource" , FormatHelpMojoSource .class );
264268 formatHelpMojoSource .setGenerator (generateHelpMojoTask );
265269 formatHelpMojoSource .getOutputDir ().set (generatedHelpMojoDir );
266270 return formatHelpMojoSource ;
267271 }
268272
269- private Sync createSyncPluginDescriptorInputs (Project project , File destination , SourceSet sourceSet ) {
273+ private Sync createSyncPluginDescriptorInputs (Project project , Provider <Directory > destination ,
274+ SourceSet sourceSet ) {
270275 Sync pluginDescriptorInputs = project .getTasks ().create ("syncPluginDescriptorInputs" , Sync .class );
271- pluginDescriptorInputs .setDestinationDir (destination );
276+ pluginDescriptorInputs .setDestinationDir (destination . get (). getAsFile () );
272277 File pomFile = new File (project .getProjectDir (), "src/maven/resources/pom.xml" );
273278 pluginDescriptorInputs .from (pomFile , (copy ) -> replaceVersionPlaceholder (copy , project ));
274279 pluginDescriptorInputs .from (sourceSet .getOutput ().getClassesDirs (), (sync ) -> sync .into ("target/classes" ));
@@ -277,12 +282,13 @@ private Sync createSyncPluginDescriptorInputs(Project project, File destination,
277282 return pluginDescriptorInputs ;
278283 }
279284
280- private MavenExec createGeneratePluginDescriptorTask (Project project , File mavenDir ) {
285+ private MavenExec createGeneratePluginDescriptorTask (Project project , Provider < Directory > mavenDir ) {
281286 MavenExec generatePluginDescriptor = project .getTasks ().create ("generatePluginDescriptor" , MavenExec .class );
282287 generatePluginDescriptor .args ("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:descriptor" );
283- generatePluginDescriptor .getOutputs ().dir (new File (mavenDir , "target/classes/META-INF/maven" ));
288+ generatePluginDescriptor .getOutputs ()
289+ .dir (mavenDir .map ((directory ) -> directory .dir ("target/classes/META-INF/maven" )));
284290 generatePluginDescriptor .getInputs ()
285- .dir (new File ( mavenDir , "target/classes/org" ))
291+ .dir (mavenDir . map (( directory ) -> directory . dir ( "target/classes/org" ) ))
286292 .withPathSensitivity (PathSensitivity .RELATIVE )
287293 .withPropertyName ("plugin classes" );
288294 generatePluginDescriptor .getProjectDir ().set (mavenDir );
@@ -298,7 +304,7 @@ private void addPrepareMavenBinariesTask(Project project) {
298304 TaskProvider <PrepareMavenBinaries > task = project .getTasks ()
299305 .register ("prepareMavenBinaries" , PrepareMavenBinaries .class ,
300306 (prepareMavenBinaries ) -> prepareMavenBinaries .getOutputDir ()
301- .set (new File ( project .getBuildDir (), "maven-binaries" )));
307+ .set (project .getLayout (). getBuildDirectory (). dir ( "maven-binaries" )));
302308 project .getTasks ()
303309 .getByName (IntegrationTestPlugin .INT_TEST_TASK_NAME )
304310 .getInputs ()
0 commit comments