Garret Wilson created MNG-7562:
----------------------------------
Summary: Mechanism for preventing inheritance of sections such as
<licence>.
Key: MNG-7562
URL: https://issues.apache.org/jira/browse/MNG-7562
Project: Maven
Issue Type: Improvement
Components: Inheritance and Interpolation
Affects Versions: 3.8.6
Reporter: Garret Wilson
There needs to a way in the Maven POM to prevent an element from being
inherited altogether in child POMs.
We are currently publishing a Maven POM that is useful to serve as the parent
POM for various projects. Some of the projects that use the POM will be open
source, but some will not be. To designate our parent POM as open source, we
include this:
{code:xml}
<licenses>
<license>
<name>Apache-2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
{code:xml}
This essentially says, "this project is open source".
Unfortunately because of [POM
inheritance|https://maven.apache.org/pom.html#Inheritance], any project that
uses this parent POM will also effectively be saying "this project is also open
source", because the effective POM of all descendant projects will also include
this same license section.
Developers could try to remember to include some {{<licenses>}} section to
override this license, but the whole point of the parent POM is that it should
given developers less to do, not more. Besides, some private projects (even
ours) might not wish to indicate a license at all!
There needs to be a way for our public parent POM to indicate that it is open
source without effectively making all child projects open source as well
through POM inheritance. Preventing the {{<licenses>}} section from being
inherited is one example.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)