Skip to content

Commit 436f275

Browse files
committed
Ensure that extensions have been built before Asciidoctor runs
See gh-40536
1 parent d01a049 commit 436f275

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java

+12-8
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.asciidoctor.gradle.jvm.AsciidoctorJPlugin;
2727
import org.asciidoctor.gradle.jvm.AsciidoctorTask;
2828
import org.gradle.api.Project;
29+
import org.gradle.api.artifacts.Configuration;
2930
import org.gradle.api.tasks.PathSensitivity;
3031
import org.gradle.api.tasks.Sync;
3132

@@ -54,6 +55,9 @@
5455
* <li>{@link AbstractAsciidoctorTask#baseDirFollowsSourceDir() baseDirFollowsSourceDir()}
5556
* is enabled.
5657
* <li>{@code asciidoctorExtensions} is added to the task's configurations.
58+
* <li>The task is configured to depend on the {@code asciidoctorExtensions} configuraion
59+
* to ensure that any extensions are built before the task runs. This works around
60+
* https://github.com/asciidoctor/asciidoctor-gradle-plugin/issues/721.
5761
* </ul>
5862
* </ul>
5963
*
@@ -64,16 +68,14 @@ class AsciidoctorConventions {
6468

6569
private static final String ASCIIDOCTORJ_VERSION = "2.4.3";
6670

67-
private static final String EXTENSIONS_CONFIGURATION_NAME = "asciidoctorExtensions";
68-
6971
void apply(Project project) {
7072
project.getPlugins().withType(AsciidoctorJPlugin.class, (asciidoctorPlugin) -> {
7173
makeAllWarningsFatal(project);
7274
upgradeAsciidoctorJVersion(project);
73-
createAsciidoctorExtensionsConfiguration(project);
75+
Configuration asciidoctorExtensions = createAsciidoctorExtensionsConfiguration(project);
7476
project.getTasks()
7577
.withType(AbstractAsciidoctorTask.class,
76-
(asciidoctorTask) -> configureAsciidoctorTask(project, asciidoctorTask));
78+
(asciidoctorTask) -> configureAsciidoctorTask(project, asciidoctorTask, asciidoctorExtensions));
7779
});
7880
}
7981

@@ -85,8 +87,8 @@ private void upgradeAsciidoctorJVersion(Project project) {
8587
project.getExtensions().getByType(AsciidoctorJExtension.class).setVersion(ASCIIDOCTORJ_VERSION);
8688
}
8789

88-
private void createAsciidoctorExtensionsConfiguration(Project project) {
89-
project.getConfigurations().create(EXTENSIONS_CONFIGURATION_NAME, (configuration) -> {
90+
private Configuration createAsciidoctorExtensionsConfiguration(Project project) {
91+
return project.getConfigurations().create("asciidoctorExtensions", (configuration) -> {
9092
project.getConfigurations()
9193
.matching((candidate) -> "dependencyManagement".equals(candidate.getName()))
9294
.all(configuration::extendsFrom);
@@ -98,8 +100,10 @@ private void createAsciidoctorExtensionsConfiguration(Project project) {
98100
});
99101
}
100102

101-
private void configureAsciidoctorTask(Project project, AbstractAsciidoctorTask asciidoctorTask) {
102-
asciidoctorTask.configurations(EXTENSIONS_CONFIGURATION_NAME);
103+
private void configureAsciidoctorTask(Project project, AbstractAsciidoctorTask asciidoctorTask,
104+
Configuration asciidoctorExtensions) {
105+
asciidoctorTask.configurations(asciidoctorExtensions);
106+
asciidoctorTask.dependsOn(asciidoctorExtensions);
103107
configureCommonAttributes(project, asciidoctorTask);
104108
configureOptions(asciidoctorTask);
105109
configureForkOptions(asciidoctorTask);

0 commit comments

Comments
 (0)