26
26
import org .asciidoctor .gradle .jvm .AsciidoctorJPlugin ;
27
27
import org .asciidoctor .gradle .jvm .AsciidoctorTask ;
28
28
import org .gradle .api .Project ;
29
+ import org .gradle .api .artifacts .Configuration ;
29
30
import org .gradle .api .tasks .PathSensitivity ;
30
31
import org .gradle .api .tasks .Sync ;
31
32
54
55
* <li>{@link AbstractAsciidoctorTask#baseDirFollowsSourceDir() baseDirFollowsSourceDir()}
55
56
* is enabled.
56
57
* <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.
57
61
* </ul>
58
62
* </ul>
59
63
*
@@ -64,16 +68,14 @@ class AsciidoctorConventions {
64
68
65
69
private static final String ASCIIDOCTORJ_VERSION = "2.4.3" ;
66
70
67
- private static final String EXTENSIONS_CONFIGURATION_NAME = "asciidoctorExtensions" ;
68
-
69
71
void apply (Project project ) {
70
72
project .getPlugins ().withType (AsciidoctorJPlugin .class , (asciidoctorPlugin ) -> {
71
73
makeAllWarningsFatal (project );
72
74
upgradeAsciidoctorJVersion (project );
73
- createAsciidoctorExtensionsConfiguration (project );
75
+ Configuration asciidoctorExtensions = createAsciidoctorExtensionsConfiguration (project );
74
76
project .getTasks ()
75
77
.withType (AbstractAsciidoctorTask .class ,
76
- (asciidoctorTask ) -> configureAsciidoctorTask (project , asciidoctorTask ));
78
+ (asciidoctorTask ) -> configureAsciidoctorTask (project , asciidoctorTask , asciidoctorExtensions ));
77
79
});
78
80
}
79
81
@@ -85,8 +87,8 @@ private void upgradeAsciidoctorJVersion(Project project) {
85
87
project .getExtensions ().getByType (AsciidoctorJExtension .class ).setVersion (ASCIIDOCTORJ_VERSION );
86
88
}
87
89
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 ) -> {
90
92
project .getConfigurations ()
91
93
.matching ((candidate ) -> "dependencyManagement" .equals (candidate .getName ()))
92
94
.all (configuration ::extendsFrom );
@@ -98,8 +100,10 @@ private void createAsciidoctorExtensionsConfiguration(Project project) {
98
100
});
99
101
}
100
102
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 );
103
107
configureCommonAttributes (project , asciidoctorTask );
104
108
configureOptions (asciidoctorTask );
105
109
configureForkOptions (asciidoctorTask );
0 commit comments