You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2026/04/21 19:48:59 UTC
(maven) branch maven-3.10.x updated: Feat: Ability to disable site lifecycle (#11970)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch maven-3.10.x
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/maven-3.10.x by this push:
new eabc29d006 Feat: Ability to disable site lifecycle (#11970)
eabc29d006 is described below
commit eabc29d00621b54f84ef821e8cccca1d5bd512dd
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Apr 21 21:48:53 2026 +0200
Feat: Ability to disable site lifecycle (#11970)
Ability to suppress site lifecycle from Maven "default lifecycles". This PR **does not** remove "site" lifecycle component, but Maven will not consider site lifecycle among "defaults", if disabled.
Note: hence, with this option, the IT suite will never (and cannot) pass, as IT suite contains ITs running/expecting site lifecycle.
Fixes #11759
---
.../apache/maven/lifecycle/DefaultLifecycles.java | 36 +++++++++++++++++++---
.../DefaultLifecycleExecutionPlanCalculator.java | 3 +-
2 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java
index 37e5ff11f4..668fef940b 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java
@@ -30,7 +30,11 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.maven.lifecycle.providers.lifecycle.CleanLifecycleProvider;
+import org.apache.maven.lifecycle.providers.lifecycle.DefaultLifecycleProvider;
+import org.apache.maven.lifecycle.providers.lifecycle.SiteLifecycleProvider;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.logging.Logger;
@@ -46,7 +50,17 @@
@Singleton
@Named
public class DefaultLifecycles {
- public static final String[] STANDARD_LIFECYCLES = {"clean", "default", "site"};
+ private static final List<String> BUILT_IN_LIFECYCLES =
+ Arrays.asList(CleanLifecycleProvider.NAME, DefaultLifecycleProvider.NAME, SiteLifecycleProvider.NAME);
+ private static final boolean SITE_DISABLED = Boolean.getBoolean("maven.site.lifecycle.disabled");
+
+ /**
+ * @deprecated Use {@link #getStandardLifecycles()} instead.
+ */
+ @Deprecated
+ public static final String[] STANDARD_LIFECYCLES = {
+ CleanLifecycleProvider.NAME, DefaultLifecycleProvider.NAME, SiteLifecycleProvider.NAME
+ };
@Inject
private Map<String, Lifecycle> lifecycles;
@@ -60,9 +74,20 @@ public class DefaultLifecycles {
public DefaultLifecycles() {}
public DefaultLifecycles(Map<String, Lifecycle> lifecycles, Logger logger) {
- this.lifecycles = new LinkedHashMap<>();
- this.logger = logger;
this.lifecycles = lifecycles;
+ this.logger = logger;
+ }
+
+ private boolean isEnabled(String lifecycleId) {
+ if (SiteLifecycleProvider.NAME.equals(lifecycleId)) {
+ return !SITE_DISABLED;
+ } else {
+ return true;
+ }
+ }
+
+ public List<String> getStandardLifecycles() {
+ return BUILT_IN_LIFECYCLES.stream().filter(this::isEnabled).collect(Collectors.toList());
}
public Lifecycle get(String key) {
@@ -113,6 +138,9 @@ public List<Lifecycle> getLifeCycles() {
// in some tests container is not injected
if (this.plexusContainer != null) {
for (String name : this.lifecycles.keySet()) {
+ if (!isEnabled(name)) {
+ continue;
+ }
try {
lifecycles.put(name, plexusContainer.lookup(Lifecycle.class, name));
} catch (ComponentLookupException e) {
@@ -123,7 +151,7 @@ public List<Lifecycle> getLifeCycles() {
lifecycles.putAll(this.lifecycles);
}
- LinkedHashSet<String> lifecycleNames = new LinkedHashSet<>(Arrays.asList(STANDARD_LIFECYCLES));
+ LinkedHashSet<String> lifecycleNames = new LinkedHashSet<>(getStandardLifecycles());
lifecycleNames.addAll(lifecycles.keySet());
ArrayList<Lifecycle> result = new ArrayList<>();
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
index 46dc56df26..b5c6fadb2b 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
@@ -24,7 +24,6 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -230,7 +229,7 @@ private Map<String, List<MojoExecution>> calculateLifecycleMappings(
}
LifecycleMappingDelegate delegate;
- if (Arrays.binarySearch(DefaultLifecycles.STANDARD_LIFECYCLES, lifecycle.getId()) >= 0) {
+ if (defaultLifeCycles.getStandardLifecycles().contains(lifecycle.getId())) {
delegate = standardDelegate;
} else {
delegate = delegates.get(lifecycle.getId());