Details
Description
Please, forgive me not providing example project reproducing the bug.
It's very tricky and hopefully not necessary, since the 1-line fix is provided.
Using profiles together with maven-javadoc-plugin results in the following problem:
- Configuration from active profiles is not considered during dependency resolution started problematically from the maven-javadoc-plugin.
This leads to unpredictable behavior, that is somewhat hard to reproduce.
Here is the technical inside and the 1-line fix:
In the DefaultMavenProjectBuilder.toRequest():
if ( profileManager != null ) { ... } else { ... /* * MNG-4900: Hack to workaround deficiency of legacy API which makes it impossible for plugins to access the * global profile manager which is required to build a POM like a CLI invocation does. Failure to consider * the activated profiles can cause repo declarations to be lost which in turn will result in artifact * resolution failures, in particular when using the enhanced local repo which guards access to local files * based on the configured remote repos. */ request.setActiveProfileIds( req.getActiveProfiles() ); request.setInactiveProfileIds( req.getInactiveProfiles() ); }
Here we copy active and inactive profile ids, but we don't copy the list of all profile ids. Missing line:
request.setProfiles( req.getProfiles() );
As the result the method DefaultProfileManager.getActiveProfiles() always returns an empty list:
List<Profile> activeProfiles = new ArrayList<>( profiles.size() ); for ( Profile profile : profiles ) { ... } return activeProfiles;
"profiles" here is empty, since it wasn't copied together with "getActiveProfiles()" and "getInactiveProfiles()"
Adding the missing line fixes the problem.
Attachments
Attachments
Issue Links
- is related to
-
MNG-4900 "Unresolveable build extension" when using shade plugin and repositories in profile
- Closed