[ https://issues.apache.org/jira/browse/MNG-6412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Osipov closed MNG-6412. ------------------------------- > Exceeding project discovery time when using CI friendly versions > ---------------------------------------------------------------- > > Key: MNG-6412 > URL: https://issues.apache.org/jira/browse/MNG-6412 > Project: Maven > Issue Type: Bug > Affects Versions: 3.5.3 > Reporter: Christoph Amshoff > Assignee: Sylwester Lachiewicz > Priority: Critical > Fix For: 3.6.0 > > Attachments: ci-version-validate.log, fix-version-validate.log, > test-ci-project-scanning.zip > > > We are switching a larger project to CI friendly versions > ([https://maven.apache.org/maven-ci-friendly.html]), using properties > _${revision}_ (fix) and _${changelist}_ (maps to the CI build number) to > create the actual version. However, doing so, the project discovery time > (right after Maven says “Scanning for projects...”) increases dramatically > from few seconds to more than 3 minutes, and we had to double the maximum > heap in order to avoid “GC overhead limit exceeded” exception. > The project root POM looks like this: > {noformat} > <groupId>test</groupId> > <artifactId>parent</artifactId> > <version>${revision}-${changelist}</version> > <packaging>pom</packaging> > ... > <properties> > <revision>1.0.0</revision> > <changelist>UNDEFINED</changelist> > </properties> {noformat} > and is built by passing “-Dchangelist=123” to the Maven process for CI build > 123, for instance. > In debug output, we can see that for each POM of the reactor there are > messages like these, repeatedly for every single parent POM up the complete > hierarchy: > {noformat} > [DEBUG] Extension realms for project test:grandchild1-1:jar:1.0.0-123: (none) > [DEBUG] Looking up lifecycle mappings for packaging jar from > ClassRealm[plexus.core, parent: null] > [DEBUG] Extension realms for project test:child1:pom:1.0.0-123: (none) > [DEBUG] Looking up lifecycle mappings for packaging pom from > ClassRealm[plexus.core, parent: null] > [DEBUG] Extension realms for project test:parent:pom:1.0.0-123: (none) > [DEBUG] Looking up lifecycle mappings for packaging pom from > ClassRealm[plexus.core, parent: null] > {noformat} > When using fix version string (release or SNAPSHOT), these messages are only > present for the reactor POMs, but not their parents, grand-parents, etc. up > to the root POM. > Looking up the lifecycle mapping for the same parent POMs over and over again > seems wrong to me, and is probably the cause of high memory consumption. > Altogether, there are more than 2,800 messages "Looking up lifecycle > mappings..." in the logs for about 350 subprojects built in the reactor! > See attached test projects and logs for fix version vs. CI friendly versions. > The test project structure is like this: > {noformat} > parent > child1 > grandchild1-1 > grandchild1-2 > child2 > grandchild2-1 > grandchild2-2{noformat} > If you compare both log files, you'll see the difference in project resolving. -- This message was sent by Atlassian JIRA (v7.6.3#76005)