Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
3.2.1
-
None
Description
Running mvn help:effective-pom on the attached POM:
[ERROR] The project com.ming:maven-failing-import-pom-example:1.0.0-SNAPSHOT (C:\wip\scratch-dev\maven-import-dependency-management\pom.xml) has 1 error [ERROR] Non-resolvable import POM: Could not transfer artifact org.springframework:spring-framework-bom:pom:4.0.0.R2 from/to spring-milestones (${spring.url}): No connector available to access repository spring-milestones (${spring.url}) of type default using the available factories WagonRepositoryConnectorFactory @ line 20, column 25 -> Help 2]
mvn help:effective-pom -Prepo-will-succeed works as expected.
Note that prior to attempting the failing resolution, the full project POM model has successfully been resolved. So the correct value for the property is known and could in theory be substituted into the repository URL before the failing import pom resolve attempt.
Will create a Github pull request with one possible solution to this - it includes a JUnit test case.
Note: agreed this is a contrived example. To try and give an idea of the actual use case - several development streams are setup with individual sandboxed Nexus repository holding specific version of several shared components. The repository configuration uses the pattern ${nexus.baseurl}/content/groups/${stream.name} with the properties set in settings.xml file.
One workaround would be to create profiles for every work stream that explicitly list the full repository URL, even then the above feature would be nice to allow the ${nexus.baseurl} to avoid repeating that part.