Skip to content

Merge behavior changed in plexus-utils 3.4.0 #239

Closed
@jhaber

Description

@jhaber

Hi there, thanks for all the great work on this project. While upgrading from Maven 3.8.7 (which uses plexus-utils 3.3.1) to Maven 3.9.0 (which uses plexus-utils 3.4.2) we noticed a change in the way some of our pom configuration is merged. I filed MNG-7709, but I also wanted to open an issue here because it appears that the behavior change is in plexus-utils (the behavior change is not present if I build a custom Maven 3.9.0 that uses plexus-utils 3.3.1). I tried a few different versions and it appears that the behavior change was introduced in plexus-utils 3.4.0 (not sure which commit).

I put together a reproducer here. There's more detail in the readme, but the issue seems to manifest when you try to clear plugin configuration, while also reconfiguring that same plugin inside a profile (in the same pom). The setup in the reproducer is:

  • The parent module configures the shade plugin with an outputFile parameter: link
  • The child module inherits from parent and resets the shade plugin configuration (using <configuration combine.self="override"/>): link
  • However, child module also configures shade plugin inside a profile (adding an unrelated finalName parameter): link
  • The nested-child module inherits from child module. It doesn't contain any configuration, but it activates the profile: link

It is expected that child and nested-child do not inherit the outputFile parameter, because the shade configuration is removed in child pom.xml. This works in Maven 3.8.7, but in Maven 3.9.0 the nested-child module does inherit the outputFile parameter. I assume this has something to do with the profile getting activated and causing the configuration to not get merged properly, but I'm not sure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions