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

Jeff Thomas commented on MNG-7589:
----------------------------------

Yeah I sort of saw that ...but was confused about MavenXpp3Writer both being 
generated in Modello *and* checked in on the 'master' branch. :)

In 3.8.6 it is only generated.

On 'master' it seems the maven-model has taken more control over the 
source-code generation or rather the writer model ("mdo/writer.vm").

I mean the "fix" would be relatively easy here.... just conditionally test for 
null/empty and leave off the 'entry.getValue()' and XmlSerializer just 
auto-closes the element.


{code:java}
private <T> void writeProperties( String tagName, Map<String, String> props, 
XmlSerializer serializer ) throws IOException
{
  if ( props != null && !props.isEmpty() )
  {
    serializer.startTag( NAMESPACE, tagName );
    for ( Map.Entry<String, String> entry : props.entrySet() )
    {
      writeTag( entry.getKey(), null, entry.getValue(), serializer );
    }
    serializer.endTag( NAMESPACE, tagName );
  }
}{code}
However, I know the self-closing tags are sort of a discussion point so I 
wasn't really sure if it was a good idea or not...

Like I said this is just "eye-candy" of sorts, the Maven Xpp3 Reader doesn't 
seem to care either way if "{{{}<foobar></foobar>{}}}" or "<foobar />".

If this is just too trivial please go ahead and close the issue :) I won't be 
offended haha 

 

> MavenXpp3Writer write empty property with self-closing tag?
> -----------------------------------------------------------
>
>                 Key: MNG-7589
>                 URL: https://issues.apache.org/jira/browse/MNG-7589
>             Project: Maven
>          Issue Type: Wish
>          Components: Core
>    Affects Versions: 3.8.6
>         Environment: Maven 3.8.6
>            Reporter: Jeff Thomas
>            Priority: Trivial
>
> I am using a maven-plugin which manipulates the POM and writes a new POM 
> model.  (similar to 'maven-git-versioning-extension' or 
> 'flatten-maven-plugin').
> When writing a POM using the MavenXpp3Writer a property without a value is 
> written out as follows:
>  
> {code:java}
> <project>
>   <properties>
>     <some.property></some.property>
>   </properties>
> </project>
> {code}
>  
> Would it be possible to write this out with a self-closing tag? Or provide an 
> option to the writer to do so?
>  
> {code:java}
> <project>
>   <properties>
>     <some.property/>
>   </properties>
> </project> {code}
> Its just eye-candy but the IDE (IntelliJ) displays warnings for empty tags 
> and I don't want to disable the check globally. :)
>  
> Why empty properties?
> For some plugins we use empty properties as placeholders which child projects 
> or sub-modules can override.  For example: maven-surefire-plugin `argLine`.  
> This prevents other IDE errors for missing properties when editing the POM.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to