You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Boris Brodski (JIRA)" <ji...@apache.org> on 2016/11/30 23:56:59 UTC
[jira] [Created] (MNG-6130) Lost of profile information in
workaround for MNG-4900
Boris Brodski created MNG-6130:
----------------------------------
Summary: Lost of profile information in workaround for MNG-4900
Key: MNG-6130
URL: https://issues.apache.org/jira/browse/MNG-6130
Project: Maven
Issue Type: Bug
Components: core
Affects Versions: 3.3.9
Environment: Windows
Reporter: Boris Brodski
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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)