Make sure that generateAntoraYml runs when attributes have changed

Closes gh-42300
This commit is contained in:
Andy Wilkinson 2024-09-13 15:10:40 +01:00
parent 5666c981fc
commit 988e083fef
1 changed files with 9 additions and 7 deletions

View File

@ -37,6 +37,7 @@ import org.gradle.StartParameter;
import org.gradle.api.Project;
import org.gradle.api.logging.LogLevel;
import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Copy;
import org.gradle.api.tasks.TaskContainer;
@ -118,8 +119,7 @@ public class AntoraConventions {
generateAntoraYmlTask.setProperty("outputFile",
new File(project.getBuildDir(), "generated/docs/antora-yml/antora.yml"));
generateAntoraYmlTask.setProperty("yml", getDefaultYml(project));
generateAntoraYmlTask.doFirst((task) -> generateAntoraYmlTask.getAsciidocAttributes()
.putAll(project.provider(() -> getAsciidocAttributes(project, dependencyVersionsTask))));
generateAntoraYmlTask.getAsciidocAttributes().putAll(getAsciidocAttributes(project, dependencyVersionsTask));
}
private Map<String, ?> getDefaultYml(Project project) {
@ -138,12 +138,14 @@ public class AntoraConventions {
return defaultYml;
}
private Map<String, String> getAsciidocAttributes(Project project,
private Provider<Map<String, String>> getAsciidocAttributes(Project project,
ExtractVersionConstraints dependencyVersionsTask) {
BomExtension bom = (BomExtension) project.project(DEPENDENCIES_PATH).getExtensions().getByName("bom");
Map<String, String> dependencyVersions = dependencyVersionsTask.getVersionConstraints();
AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes(project, bom, dependencyVersions);
return attributes.get();
return project.provider(() -> {
BomExtension bom = (BomExtension) project.project(DEPENDENCIES_PATH).getExtensions().getByName("bom");
Map<String, String> dependencyVersions = dependencyVersionsTask.getVersionConstraints();
AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes(project, bom, dependencyVersions);
return attributes.get();
});
}
private void configureAntoraTask(Project project, AntoraTask antoraTask, NpmInstallTask npmInstallTask,