1
1
/*
2
- * Copyright 2023-2024 the original author or authors.
2
+ * Copyright 2023-2025 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
41
41
import org .gradle .api .provider .Provider ;
42
42
import org .gradle .api .tasks .Copy ;
43
43
import org .gradle .api .tasks .TaskContainer ;
44
+ import org .gradle .api .tasks .TaskProvider ;
44
45
45
46
import org .springframework .boot .build .antora .AntoraAsciidocAttributes ;
46
47
import org .springframework .boot .build .antora .GenerateAntoraPlaybook ;
@@ -75,16 +76,16 @@ void apply(Project project) {
75
76
}
76
77
77
78
private void apply (Project project , AntoraPlugin antoraPlugin ) {
78
- ExtractVersionConstraints dependencyVersionsTask = addDependencyVersionsTask (project );
79
+ TaskProvider < ExtractVersionConstraints > dependencyVersionsTask = addDependencyVersionsTask (project );
79
80
project .getPlugins ().apply (GenerateAntoraYmlPlugin .class );
80
81
TaskContainer tasks = project .getTasks ();
81
- GenerateAntoraPlaybook generateAntoraPlaybookTask = tasks .create ( GENERATE_ANTORA_PLAYBOOK_TASK_NAME ,
82
- GenerateAntoraPlaybook .class );
83
- configureGenerateAntoraPlaybookTask (project , generateAntoraPlaybookTask );
84
- Copy copyAntoraPackageJsonTask = tasks .create ("copyAntoraPackageJson" , Copy .class );
85
- configureCopyAntoraPackageJsonTask (project , copyAntoraPackageJsonTask );
86
- NpmInstallTask npmInstallTask = tasks .create ("antoraNpmInstall" , NpmInstallTask .class );
87
- configureNpmInstallTask (project , npmInstallTask , copyAntoraPackageJsonTask );
82
+ TaskProvider < GenerateAntoraPlaybook > generateAntoraPlaybookTask = tasks .register (
83
+ GENERATE_ANTORA_PLAYBOOK_TASK_NAME , GenerateAntoraPlaybook .class ,
84
+ ( task ) -> configureGenerateAntoraPlaybookTask (project , task ) );
85
+ TaskProvider < Copy > copyAntoraPackageJsonTask = tasks .register ("copyAntoraPackageJson" , Copy .class ,
86
+ ( task ) -> configureCopyAntoraPackageJsonTask (project , task ) );
87
+ TaskProvider < NpmInstallTask > npmInstallTask = tasks .register ("antoraNpmInstall" , NpmInstallTask .class ,
88
+ ( task ) -> configureNpmInstallTask (project , task , copyAntoraPackageJsonTask ) );
88
89
tasks .withType (GenerateAntoraYmlTask .class , (generateAntoraYmlTask ) -> configureGenerateAntoraYmlTask (project ,
89
90
generateAntoraYmlTask , dependencyVersionsTask ));
90
91
tasks .withType (AntoraTask .class ,
@@ -106,7 +107,8 @@ private void configureCopyAntoraPackageJsonTask(Project project, Copy copyAntora
106
107
.into (getNodeProjectDir (project ));
107
108
}
108
109
109
- private void configureNpmInstallTask (Project project , NpmInstallTask npmInstallTask , Copy copyAntoraPackageJson ) {
110
+ private void configureNpmInstallTask (Project project , NpmInstallTask npmInstallTask ,
111
+ TaskProvider <Copy > copyAntoraPackageJson ) {
110
112
npmInstallTask .dependsOn (copyAntoraPackageJson );
111
113
Map <String , String > environment = new HashMap <>();
112
114
environment .put ("npm_config_omit" , "optional" );
@@ -115,14 +117,14 @@ private void configureNpmInstallTask(Project project, NpmInstallTask npmInstallT
115
117
npmInstallTask .getNpmCommand ().set (List .of ("ci" , "--silent" , "--no-progress" ));
116
118
}
117
119
118
- private ExtractVersionConstraints addDependencyVersionsTask (Project project ) {
120
+ private TaskProvider < ExtractVersionConstraints > addDependencyVersionsTask (Project project ) {
119
121
return project .getTasks ()
120
- .create ("dependencyVersions" , ExtractVersionConstraints .class ,
122
+ .register ("dependencyVersions" , ExtractVersionConstraints .class ,
121
123
(task ) -> task .enforcedPlatform (DEPENDENCIES_PATH ));
122
124
}
123
125
124
126
private void configureGenerateAntoraYmlTask (Project project , GenerateAntoraYmlTask generateAntoraYmlTask ,
125
- ExtractVersionConstraints dependencyVersionsTask ) {
127
+ TaskProvider < ExtractVersionConstraints > dependencyVersionsTask ) {
126
128
generateAntoraYmlTask .getOutputs ().doNotCacheIf ("getAsciidocAttributes() changes output" , (task ) -> true );
127
129
generateAntoraYmlTask .dependsOn (dependencyVersionsTask );
128
130
generateAntoraYmlTask .setProperty ("componentName" , "boot" );
@@ -149,17 +151,16 @@ private void configureGenerateAntoraYmlTask(Project project, GenerateAntoraYmlTa
149
151
}
150
152
151
153
private Provider <Map <String , String >> getAsciidocAttributes (Project project ,
152
- ExtractVersionConstraints dependencyVersionsTask ) {
153
- return project . provider (( ) -> {
154
+ TaskProvider < ExtractVersionConstraints > dependencyVersionsTask ) {
155
+ return dependencyVersionsTask . map (( task ) -> task . getVersionConstraints ()). map (( constraints ) -> {
154
156
BomExtension bom = (BomExtension ) project .project (DEPENDENCIES_PATH ).getExtensions ().getByName ("bom" );
155
- Map <String , String > dependencyVersions = dependencyVersionsTask .getVersionConstraints ();
156
- AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes (project , bom , dependencyVersions );
157
- return attributes .get ();
157
+ return new AntoraAsciidocAttributes (project , bom , constraints ).get ();
158
158
});
159
159
}
160
160
161
- private void configureAntoraTask (Project project , AntoraTask antoraTask , NpmInstallTask npmInstallTask ,
162
- GenerateAntoraPlaybook generateAntoraPlaybookTask ) {
161
+ private void configureAntoraTask (Project project , AntoraTask antoraTask ,
162
+ TaskProvider <NpmInstallTask > npmInstallTask ,
163
+ TaskProvider <GenerateAntoraPlaybook > generateAntoraPlaybookTask ) {
163
164
antoraTask .setGroup ("Documentation" );
164
165
antoraTask .dependsOn (npmInstallTask , generateAntoraPlaybookTask );
165
166
antoraTask .setPlaybook ("antora-playbook.yml" );
0 commit comments