[
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)