Description
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 anoutputFile
parameter: link - The
child
module inherits fromparent
and resets the shade plugin configuration (using<configuration combine.self="override"/>
): link - However,
child
module also configures shade plugin inside a profile (adding an unrelatedfinalName
parameter): link - The
nested-child
module inherits fromchild
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.