[ 
https://issues.apache.org/jira/browse/MNG-6059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15374506#comment-15374506
 ] 

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:

{noformat}
    <scm child.inherit.append.path="connection developerConnection">
        <connection>scm:svn:http://example.org/</connection>
        <developerConnection>scm:svn:https://example.org/</developerConnection>
        <url>https://example.net/browse=${project.artifactId}</url>
    </scm>
{noformat}

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.

WDYT?

> Important use cases not covered, as child.inherit.append.path affects all 
> children
> ----------------------------------------------------------------------------------
>
>                 Key: MNG-6059
>                 URL: https://issues.apache.org/jira/browse/MNG-6059
>             Project: Maven
>          Issue Type: Bug
>          Components: Inheritance and Interpolation
>         Environment: Apache Maven 3.4.0-SNAPSHOT 
> (227085283b6379038ec16f4cf9ad2e8869cef694; 2016-07-06T21:29:12+02:00)
>            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 
> <http://central.sonatype.org/pages/requirements.html>):
> {noformat}
> <scm>
>   
> <connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection>
>   
> <developerConnection>scm:git:ssh://github.com:simpligility/ossrh-demo.git</developerConnection>
>   <url>http://github.com/simpligility/ossrh-demo/tree/master</url>
> </scm>
> {noformat}
> If the {{ossrh-demo.git}} repository contains a child module called 
> {{some-module}}, then that child’s {{scm/url}} should become 
> {{http://github.com/simpligility/ossrh-demo/tree/master/some-module}} 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
(v6.3.4#6332)

Reply via email to