[ 
https://issues.apache.org/jira/browse/MNG-6130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16531762#comment-16531762
 ] 

Robert Scholte commented on MNG-6130:
-------------------------------------

{{DefaultMavenProjectBuilder}} is part of maven-compat, it is deprecated and 
should only be used by Maven2 plugins. Instead plugins should use 
{{DefaultProjectBuilder}}.
I prefer not to touch maven-compat, it is there only for compatibilty. 
I'm kind of surprised that it is used, the maven-javadoc-plugin shouldn't use 
it (latest is already Maven 3 only and doesn't use maven-compat), nor should 
Maven.
So we should verify if this is an issue for  {{DefaultProjectBuilder}}, in the 
end that's the used implementation.

> Loss 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, 3.5.0
>         Environment: Windows
>            Reporter: Boris Brodski
>            Priority: Major
>              Labels: easyfix, patch
>             Fix For: waiting-for-feedback
>
>         Attachments: MNG-6130.patch
>
>
> 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():
> {noformat}
> 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() );
> }
> {noformat}
> Here we copy active and inactive profile ids, but we don't copy the list of 
> all profile ids. Missing line:
> {noformat}
>                     request.setProfiles( req.getProfiles() );
> {noformat}
> As the result the method DefaultProfileManager.getActiveProfiles() always 
> returns an empty list:
> {noformat}
>   List<Profile> activeProfiles = new ArrayList<>( profiles.size() );
>   for ( Profile profile : profiles ) {
>      ...
>   }
>   return activeProfiles;
> {noformat}
> "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
(v7.6.3#76005)

Reply via email to