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());