[ https://jira.codehaus.org/browse/MNG-5682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=355299#comment-355299 ]
Devin Reid edited comment on MNG-5682 at 10/30/14 10:46 PM: ------------------------------------------------------------ Ran in to this issue as well. This is documented behavior as indicated by [Maven 3.x compatiblity notes|https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-ParentPOMResolution]. bq. Maven 3 no longer resolves parent POMs from the local project checkout unless the child POM's <relativePath> element is accurate, whether explicitly given or using the default value. This improves consistency regarding the build result when building the child project in isolation and when performing a reactor build that includes the parent project. In Maven 2, building the child project in isolation could fail while the reactor build would succeed to resolve the parent. The reasoning behind this doesn't make sense to me. This change impacts projects that want to "opt-out" of the of the relativePath functionality (i.e. set <relativePath /> for parents in child poms) . If I set relativePath to be no path I certainly want the pom to be resolved from the reactor. More over it makes parent poms behavior as a dependency inconsistent with how every other dependency in Maven works. The reason stated that behavior was inconsistent between isolated and reactor builds but I disagree. It was entirely consistent. Using the sample project attached to this issue as an example, if B has a dependency on C, it will fail to build in isolation if C hasn't been installed in exactly the same way it will fail to build if 'parent' hadn't been installed. That is consistent and the way Maven 2 worked. In Maven 3, if parent isn't already installed a reactor build fails, even thought the same would not be true if C were not already installed. Even worse, if parent is installed and I make changes to the working copy those changes are not picked up by dependents even though parent is in the reactor. Very inconsistent behavior. I would hope that this new behavior for parent resolution could be rolled back in its entirety, but a less drastic change would be to allow resolving a parent from the reactor when 'relativePath' is set to null/empty. At least that would allow projects to 'opt-out' as before. was (Author: devman07): Ran in to this issue as well. This is documented behavior as indicated by [Maven 3.x compatiblity notes|https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-ParentPOMResolution]. bq. Maven 3 no longer resolves parent POMs from the local project checkout unless the child POM's <relativePath> element is accurate, whether explicitly given or using the default value. This improves consistency regarding the build result when building the child project in isolation and when performing a reactor build that includes the parent project. In Maven 2, building the child project in isolation could fail while the reactor build would succeed to resolve the parent. The reasoning behind this doesn't make sense to me. This change impacts projects that want to "opt-out" of the of the relativePath functionality (i.e. set <relativePath /> for parents in child poms) . If I set relativePath to be no path I certainly want the pom to be resolved from the reactor. More over it makes parent poms behavior as a dependency inconsistent with how every other dependency in Maven works. The reason stated that behavior was inconsistent between isolated and reactor builds but I disagree. It was entirely consistent. Using the sample project attached to this issue as an example, if B has a dependency on C, it will fail to build in isolation if C hasn't been installed in exactly the same way it will fail to build if 'parent' hadn't been installed. That is consistent and the way Maven 2 worked. Now if parent isn't installed a reactor build fails, even thought the same would not be true if C were not installed. Even worse, if parent is installed and I make changes to it those changes are not picked up by dependents even though parent is in the reactor. Very inconsistent behavior. I would hope that this new behavior for parent resolution could be rolled back in its entirety, but a less drastic change would be to allow resolving a parent from the reactor when 'relativePath' is set to null/empty. At least that would allow projects to 'opt-out' as before. > Parent POMs not resolved in multi-module project > ------------------------------------------------ > > Key: MNG-5682 > URL: https://jira.codehaus.org/browse/MNG-5682 > Project: Maven > Issue Type: Bug > Components: Bootstrap & Build > Affects Versions: 3.0.4, 3.1.1, 3.2.3 > Environment: Apache Maven 3.2.3 > (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T22:58:10+02:00) > Java version: 1.7.0_67, vendor: Oracle Corporation > Default locale: en_US, platform encoding: Cp1250 > OS name: "windows 7", version: "6.1", arch: "x86", family: "windows" > Reporter: Kek > Priority: Minor > Attachments: test-project.zip > > > I have multi-module project - I attach the similar simple project structure > to this issue, to simulate the problem => !test-project.zip!. > The structure is: > {noformat} > A - aggregating project, parent for "parent" > |_parent - parent for B and C > |_B > |_C > {noformat} > In reality we have more parents under A for diferent types of A-submodules, > but now it does not matter. > When we run build under maven 2.2.1 - everything is OK, the reactor sorts > the projects like A, PARENT, B,C and build success. > When we run the same build under maven 3.x (3.0.4, 3.1.1, 3.2.3 was tested), > the build fails with following errors: > a>mvn clean > [INFO] Scanning for projects... > [ERROR] The build could not read 2 projects -> [Help 1] > [ERROR] > [ERROR] The project a:b:[unknown-version] (\a\b\pom.xml) has 1 error > [ERROR] Non-resolvable parent POM: Could not find artifact > a:parent:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local > POM @ line 6, column 10 -> [Help 2] > [ERROR] > [ERROR] The project a:c:[unknown-version] (\a\c\pom.xml) has 1 error > [ERROR] Non-resolvable parent POM: Could not find artifact > a:parent:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local > POM @ line 6, column 10 -> [Help 2] > [ERROR] > [ERROR] To see the full stack trace of the errors, re-run Maven with the -e > switch. > [ERROR] Re-run Maven using the -X switch to enable full debug logging. > [ERROR] > [ERROR] For more information about the errors and possible solutions, please > read the following articles: > [ERROR] [Help 1] > http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException > [ERROR] [Help 2] > http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException > There is no explicit "relativePath" set in project POMs. -- This message was sent by Atlassian JIRA (v6.1.6#6162)