Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-4148

Apply profiles from settings.xml to POMs built from the repository



    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: 2.1.0
    • Fix Version/s: None
    • Labels:


      When we declare a profile in the settings.xml, it will never be applied to POMs loaded from the Maven repository. This means that overriding the central repository definition - for instance - cannot be done without using mirror definitions, since transitive dependencies (any dependency of a direct dependency) will skip the modified definition and use the original from the super-POM instead.

      I'm attaching a testing setup that was originally reported for MNG-3553, which exhibits this problem when dealing with scope == import. The instructions for using it are as follows:

      I installed locally a nexus server (1.3.3 Open Source) and I'm using maven 2.1.0 (I reproduced the issue with 2.0.10).
      In the releases repository of nexus you upload all artifacts given in the toUpload directory :
          * parent 1.0.0 pom
          * dependencies 1.0.0 pom
          * module 1.0.0 pom and jar
      You'll find in the root of the archive my settings. It defines to use nexus for the central repository.
      You launch a build of the project and you'll have :
      [INFO] Scanning for projects...
      [INFO] ------------------------------------------------------------------------
      [INFO] Building Unnamed - org.apache.maven.it.mng3553:project:jar:1.0.0-SNAPSHOT
      [INFO]    task-segment: [install]
      [INFO] ------------------------------------------------------------------------
      [INFO] [resources:resources]
      [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
      [INFO] skip non existing resourceDirectory E:\jtb\workspaces\tests\test-mng3553\project\src\main\resources
      Downloading: http://localhost:8081/nexus/content/groups/public//org/apache/maven/it/mng3553/module/1.0.0/module-1.0.0.pom
      867b downloaded  (module-1.0.0.pom)
      Downloading: http://repo1.maven.org/maven2/org/apache/maven/it/mng3553/dependencies/1.0.0/dependencies-1.0.0.pom
      [WARNING] Unable to get resource 'org.apache.maven.it.mng3553:dependencies:pom:1.0.0'
      from repository central (http://repo1.maven.org/maven2): Authorization failed: Access denied to:
      [INFO] ------------------------------------------------------------------------
      [INFO] ------------------------------------------------------------------------
      [INFO] Failed to resolve artifact.
      GroupId: org.apache.maven.it.mng3553
      ArtifactId: dependencies
      Version: 1.0.0
      Reason: Unable to download the artifact from any repository
      from the specified remote repositories:
        central (http://repo1.maven.org/maven2)
      [INFO] ------------------------------------------------------------------------
      [INFO] For more information, run Maven with the -e switch
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 1 second
      [INFO] Finished at: Thu Apr 30 15:19:47 CEST 2009
      [INFO] Final Memory: 6M/254M
      [INFO] ------------------------------------------------------------------------
      You can see that the project downloads successfully the module-1.0.0 from nexus but
      it fails for depencencies which is an import. It tries to download it from the real central repository
      and not from the one I defined in my settings.
      The behavior is inconsistent...


        1. test-mng3553.zip
          4 kB
          John Dennis Casey

          Issue Links



              • Assignee:
                jdcasey John Dennis Casey
                jdcasey John Dennis Casey
              • Votes:
                27 Vote for this issue
                20 Start watching this issue


                • Created: