[ https://jira.codehaus.org/browse/MNG-5634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=346390#comment-346390 ]
Jörg Schaible commented on MNG-5634: ------------------------------------ You made simply wrong assumptions about how Maven works. When you activate the "bom" profile, the parent declares your dependency as provided (implicitly via the import), but since your project declares the same dependency again as runtime (again implicitly via another import). Thus runtime wins. > Import scope is not respected in profiles > ----------------------------------------- > > Key: MNG-5634 > URL: https://jira.codehaus.org/browse/MNG-5634 > Project: Maven 2 & 3 > Issue Type: Bug > Components: Dependencies, Inheritance and Interpolation > Affects Versions: 3.0.5 > Reporter: Christian Koppen > Attachments: import-scope-in-profile.zip > > > The {{import}} scope does not work as expected when used in a scenario with > inheritance and profiles. > Please have a look at the attached testcase to understand the problem. > We have a project POM that declares a dependency. The scope of this > dependency ({{runtime}}) is imported from a BOM POM ({{runtime-bom}}). The > project POM has a parent POM which defines two profiles. In the first profile > ({{direct}}), the scope of the dependency is set to {{provided}}. In the > second profile ({{bom}}), another BOM POM ({{provided-pom}}) is imported that > defines the scope of the dependency as {{provided}}. > When maven is executed without defining profiles, the dependency is resolved > in scope {{runtime}}. This is what I expect. > When maven is executed with profile {{direct}}, the dependency is resolved in > scope {{provided}}. This is what I expect. > When maven is executed with profile {{bom}}, the dependency is resolved in > scope {{runtime}}. I expect the scope to be {{provided}}. > The > [documentation|http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope] > states that a dependency with scope {{import}} is *replaced* by the > {{dependencyManagement}}-block of the imported POM. This is not true in this > case. > Output from the command line: > {noformat} > import-scope-in-profile\project>mvn -Pdirect dependency:tree > [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ project --- > [INFO] org.apache.maven.issues:project:jar:1.0-SNAPSHOT > [INFO] \- org.apache.maven.issues:dependency:jar:1.0-SNAPSHOT:provided > import-scope-in-profile\project>mvn -Pbom dependency:tree > [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ project --- > [INFO] org.apache.maven.issues:project:jar:1.0-SNAPSHOT > [INFO] \- org.apache.maven.issues:dependency:jar:1.0-SNAPSHOT:runtime > {noformat} -- This message was sent by Atlassian JIRA (v6.1.6#6162)