Details
Description
When adding features to a custom distribution karaf-maven-plugin uses pax-url-aether to fetch artifacts which don't yet exist in the local maven repository.
pax-url-aether has logic to discover the local repository and settings.xml file, but this relies on defaults plus a few heuristics. If a Maven build uses a custom settings.xml file which contains auth details, ie. when running on CI, then this is not picked up by pax-url-aether and it cannot fetch down additional content.
The current user settings file is accessible from the MavenSession which is already available in Karaf's MojoSupport:
MavenSession->getRequest->getUserSettingsFile
All that needs to be done is to pass this path to pax-url-aether by setting the "org.ops4j.pax.url.mvn.settings" system property. Note the custom user settings file may be null or may not exist, in which case pax-url-aether should use the global settings. Since it already has code to discover the global settings using known locations we don't need to pass this on, so we just avoid setting "org.ops4j.pax.url.mvn.settings" in this case.
(I'll attach a patch that implements this suggested solution)