I have a feeling this has been covered before, but I'll ask just in case. I have a pom.xml that inherits from a parent pom, and the child pom has the following plugin definition: ---------------------- <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration combine.self="override"> <release>11</release> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </path> </annotationProcessorPaths> </configuration> </plugin> ----------------------
Notice the "combine.self" attribute. In a command line mvn build, this does exactly what it needs to, completely overriding the plugin configuration inherited from the parent pom. If I don't have that, it results in errors because it "merges" the plugin configs by default. What's annoying is that if I open this pom.xml in Eclipse, with the m2e plugin, I get the following error on that line: cvc-complex-type.3.2.2: Attribute 'combine.self' is not allowed to appear in element 'configuration'. I, along with multiple other people, assumed that this indicates a bug in m2e, because it clearly works in the command-line build. However, it was pointed out that m2e is actually USING the defined schema defined in the boilerplate of a pom.xml, instead of ignoring it, and if you open up that schema, it clearly shows the lack of an "attribute" element in the "configuration" complex-type. So, clearly mvn is using that attribute, but I'm guessing it's not doing any schema validation, or builds using that attribute would fail. I have a feeling this situation has been in place for a long time.