maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Sewe (JIRA)" <>
Subject [jira] [Commented] (MNG-6059) Important use cases not covered, as child.inherit.append.path affects all children
Date Wed, 13 Jul 2016 07:16:21 GMT


Andreas Sewe commented on MNG-6059:

bq. I tried to explain it: yes, the element is a String field in its parent class, not an
object we can add an attribute without changing the generated classes, which would create
serious incompatibility with previous versions

Thanks for the explanation, [~hboutemy]. That is indeed a problem. :-(

What about changing the value set of {{@child.inherit.append.path}} to a whitespace-separated
list of element names, then? So you could do the following:

    <scm child.inherit.append.path="connection developerConnection">

The above would append the path only to {{connection}} and {{developerConnection}}, but not
to {{url}}. This would remove the need for different attribute names and somewhat alleviate
my criticism that {{project/@child.inherit.append.path}} would be too far away from {{project/url}}
for the casual reader to spot what the former refers to; {{child.inherit.append.path="url"}}
makes this a lot clearer.


> Important use cases not covered, as child.inherit.append.path affects all children
> ----------------------------------------------------------------------------------
>                 Key: MNG-6059
>                 URL:
>             Project: Maven
>          Issue Type: Bug
>          Components: Inheritance and Interpolation
>         Environment: Apache Maven 3.4.0-SNAPSHOT (227085283b6379038ec16f4cf9ad2e8869cef694;
>            Reporter: Andreas Sewe
>             Fix For: 3.4.0
> The {{child.inherit.append.path}} attribute introduced with MNG-5951 unfortunately does
not support the use case where the children of the element with the attribute should follow
different inheritance rules. Take a typical configuration for Github, for example (taken from
> {noformat}
> <scm>
>   <connection>scm:git:git://</connection>
>   <developerConnection>scm:git:ssh://</developerConnection>
>   <url></url>
> </scm>
> {noformat}
> If the {{ossrh-demo.git}} repository contains a child module called {{some-module}},
then that child’s {{scm/url}} should become {{}}
as per the normal inheritance rules, but both the {{scm/connection}} and {{scm/developerConnection}}
URLs should remain unchanged.
> Unfortunately, this is not possible with {{*child*.inherit.append.path}}, which acts
on all children simultaneously.
> IMHO, this is a conceptual problem. In particular, setting {{child.inherit.append.path}}
on the *root* element to just control a single child ({{project/url}}) feels wrong, as the
attribute is in all likelihood not even located close to the {{<url>}} element it controls.

This message was sent by Atlassian JIRA

View raw message