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)