diff --git a/buildSrc/.idea/workspace.xml b/buildSrc/.idea/workspace.xml
new file mode 100644
index 0000000000..a5f4260636
--- /dev/null
+++ b/buildSrc/.idea/workspace.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1710536464815
+
+
+ 1710536464815
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java
index e082cdc8ed..1cba46bdb9 100644
--- a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java
+++ b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java
@@ -19,6 +19,8 @@ package org.springframework.boot.build;
import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -29,9 +31,9 @@ import com.github.gradle.node.NodeExtension;
import com.github.gradle.node.npm.task.NpmInstallTask;
import io.spring.gradle.antora.GenerateAntoraYmlPlugin;
import io.spring.gradle.antora.GenerateAntoraYmlTask;
-import org.antora.gradle.AntoraExtension;
import org.antora.gradle.AntoraPlugin;
import org.antora.gradle.AntoraTask;
+import org.gradle.StartParameter;
import org.gradle.api.Project;
import org.gradle.api.logging.LogLevel;
import org.gradle.api.plugins.JavaBasePlugin;
@@ -77,8 +79,6 @@ public class AntoraConventions {
generateAntoraYmlTask, dependencyVersionsTask));
tasks.withType(AntoraTask.class,
(antoraTask) -> configureAntoraTask(project, antoraTask, npmInstallTask, generateAntoraPlaybookTask));
- project.getExtensions()
- .configure(AntoraExtension.class, (antoraExtension) -> configureAntoraExtension(project, antoraExtension));
project.getExtensions()
.configure(NodeExtension.class, (nodeExtension) -> configureNodeExtension(project, nodeExtension));
}
@@ -101,7 +101,7 @@ public class AntoraConventions {
environment.put("npm_config_omit", "optional");
environment.put("npm_config_update_notifier", "false");
npmInstallTask.getEnvironment().set(environment);
- npmInstallTask.getNpmCommand().set(List.of("ci"));
+ npmInstallTask.getNpmCommand().set(List.of("ci", "--quiet"));
}
private ExtractVersionConstraints addDependencyVersionsTask(Project project) {
@@ -152,6 +152,7 @@ public class AntoraConventions {
antoraTask.dependsOn(npmInstallTask, generateAntoraPlaybookTask);
antoraTask.setPlaybook("antora-playbook.yml");
antoraTask.setUiBundleUrl(getUiBundleUrl(project));
+ antoraTask.getArgs().set(project.provider(() -> getAntoraNpxArs(project, antoraTask)));
project.getPlugins()
.withType(JavaBasePlugin.class,
(javaBasePlugin) -> project.getTasks()
@@ -159,6 +160,30 @@ public class AntoraConventions {
.dependsOn(antoraTask));
}
+ private List getAntoraNpxArs(Project project, AntoraTask antoraTask) {
+ logWarningIfNodeModulesInUserHome(project);
+ StartParameter startParameter = project.getGradle().getStartParameter();
+ boolean showStacktrace = startParameter.getShowStacktrace().name().startsWith("ALWAYS");
+ boolean debugLogging = project.getGradle().getStartParameter().getLogLevel() == LogLevel.DEBUG;
+ String playbookPath = antoraTask.getPlaybook();
+ List arguments = new ArrayList<>();
+ arguments.addAll(List.of("--package", "@antora/cli"));
+ arguments.add("antora");
+ arguments.addAll((!showStacktrace) ? Collections.emptyList() : List.of("--stacktrace"));
+ arguments.addAll((!debugLogging) ? List.of("--quiet") : List.of("--log-level", "all"));
+ arguments.addAll(List.of("--ui-bundle-url", antoraTask.getUiBundleUrl()));
+ arguments.add(playbookPath);
+ return arguments;
+ }
+
+ private void logWarningIfNodeModulesInUserHome(Project project) {
+ if (new File(System.getProperty("user.home"), "node_modules").exists()) {
+ project.getLogger()
+ .warn("Detected the existence of $HOME/node_modules. This directory is "
+ + "not compatible with this plugin. Please remove it.");
+ }
+ }
+
private String getUiBundleUrl(Project project) {
try {
File packageJson = project.getRootProject().file("antora/package.json");
@@ -174,15 +199,6 @@ public class AntoraConventions {
}
}
- private void configureAntoraExtension(Project project, AntoraExtension antoraExtension) {
- if (project.getGradle().getStartParameter().getLogLevel() != LogLevel.DEBUG) {
- antoraExtension.getOptions().add("--quiet");
- }
- else {
- antoraExtension.getOptions().addAll("--log-level", "all");
- }
- }
-
private void configureNodeExtension(Project project, NodeExtension nodeExtension) {
File buildDir = project.getBuildDir();
nodeExtension.getWorkDir().set(buildDir.toPath().resolve(".gradle/nodejs").toFile());