[ https://issues.apache.org/jira/browse/MNG-7310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17575639#comment-17575639 ]
ASF GitHub Bot commented on MNG-7310: ------------------------------------- michael-o commented on code in PR #639: URL: https://github.com/apache/maven/pull/639#discussion_r938569898 ########## maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java: ########## @@ -139,13 +138,34 @@ public List<Lifecycle> getLifeCycles() } }; + Map<String, Lifecycle> lifecyclesMap = lookupLifecycleMap(); + // ensure canonical order of standard lifecycles return lifecyclesMap.values().stream() .peek( l -> Objects.requireNonNull( l.getId(), "A lifecycle must have an id." ) ) .sorted( Comparator.comparing( Lifecycle::getId, comparator ) ) .collect( Collectors.toList() ); } + private Map<String, Lifecycle> lookupLifecycleMap() + { + // This code is here to ensure maven-compat's EmptyLifecycleExecutor keeps on working. + if ( plexusContainer == null ) + { + return new HashMap<>(); + } + + // Lifecycles cannot be cached as extensions might add custom lifecycles later in the execution. + try + { + return plexusContainer.lookupMap( Lifecycle.class ); + } + catch ( ComponentLookupException e ) + { + throw new RuntimeException( "Unable to lookup lifecycles from the plexus container", e ); Review Comment: Would an `IllegalStateException` better here? ########## maven-core/src/test/java/org/apache/maven/lifecycle/DefaultLifecyclesTest.java: ########## @@ -81,7 +86,7 @@ public void testWrapperLifecycle() } @Test - public void testCustomLifecycle() + public void testCustomLifecycle() throws ComponentLookupException Review Comment: Should be a new line if it is in the other test of this changeset ########## maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java: ########## @@ -25,15 +27,16 @@ import java.util.Map; import static org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * @author Kristian Rosenvold */ public class DefaultLifecyclesStub { - public static DefaultLifecycles createDefaultLifecycles() - { + public static DefaultLifecycles createDefaultLifecycles() throws ComponentLookupException { Review Comment: Same here > Maven loads extension from another submodule > -------------------------------------------- > > Key: MNG-7310 > URL: https://issues.apache.org/jira/browse/MNG-7310 > Project: Maven > Issue Type: Bug > Affects Versions: 4.0.0-alpha-1 > Reporter: Martin Kanters > Priority: Major > Attachments: demo-plugins.zip > > > With the latest Maven master, I'm not able to build a certain multi module > project. > It fails with the following error: > C:\work\apache\demo>mvn validate > [INFO] Scanning for projects... > ... > [ERROR] The build could not read 1 project -> [Help 1] > [ERROR] > [ERROR] The project com.example:demo2:0.0.1-SNAPSHOT > (C:\work\apache\demo\demo2\pom.xml) has 1 error > [ERROR] 'build.plugins.plugin.version' for > org.springframework.cloud:spring-cloud-contract-maven-plugin must be a valid > version but is '${project.version}'. @ > org.apache.maven:maven-core:4.0.0-alpha-1-SNAPSHOT:default-lifecycle-bindings > The project looks as follows: > parent > – demo (module containing plugin "spring-cloud-contract-maven-plugin") > – demo2 (module) > "demo2" has no dependency on "demo" and the parent of "demo2" is "parent".. > Somehow, the plugin from "demo" leaks into "demo2", which I've verified is > the case during a debug session. > I'm still unsure of a couple of things: > - Does it only happen with the "spring-cloud-contract-maven-plugin" plugin? > - Where does ${project.version} come from? (I've not defined it) > I've done a bisect and tracked it down to the following commit: > [[MNG-5577] Convert maven-core to JSR > 330|https://github.com/apache/maven/commit/9567da2bc889a94f5c3b692b4afb310ddbacd6e5] > Subject project is attached. Reproduce with the current master of Maven: mvn > validate. -- This message was sent by Atlassian Jira (v8.20.10#820010)