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)

Reply via email to