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

Ruwen Reddig commented on ARCHETYPE-584:
----------------------------------------

Stumpled over the same problem yesterday. Please have a look at my PR. I added 
some explanation in the github comment.

Here is a minimal, reproducible example of the problem + fix
{code:java}
public static void main(String[] args) throws Exception {
    String dummyPom =
        "<project " +
            "xmlns=\"http://maven.apache.org/POM/4.0.0\"; " +
            "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; " +
            "xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 " +
            "http://maven.apache.org/xsd/maven-4.0.0.xsd\";>\n" +
            "  <modelVersion>4.0.0</modelVersion>\n" +
            "  <packaging>pom</packaging>\n" +
        "</project>";

    InputSource inputSource = new InputSource();
    inputSource.setCharacterStream( new StringReader(dummyPom) );

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    // uncomment the following lines to see the fix(?)
    //dbf.setIgnoringElementContentWhitespace(true);
    dbf.setNamespaceAware(true);
    dbf.setSchema( getSchema() );

    Document document = dbf.newDocumentBuilder().parse( inputSource );

    Transformer tr = TransformerFactory.newInstance().newTransformer();
    tr.setOutputProperty( OutputKeys.INDENT, "yes" );

    // comment this line and output still looks okay?!!
    tr.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount";, "2" );

    StringWriter fileWriter = new StringWriter();
    tr.transform( new DOMSource( document ), new StreamResult( fileWriter ) );

    System.out.println(fileWriter.toString());
}

private static Schema getSchema() throws SAXException, MalformedURLException {
    URI uri = URI.create("https://maven.apache.org/xsd/maven-4.0.0.xsd";);
    return SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
        .newSchema(uri.toURL());
}

{code}

> Resulting root pom.xml from archetype generation has bad indentation
> --------------------------------------------------------------------
>
>                 Key: ARCHETYPE-584
>                 URL: https://issues.apache.org/jira/browse/ARCHETYPE-584
>             Project: Maven Archetype
>          Issue Type: Bug
>          Components: Archetypes
>    Affects Versions: 3.1.1, 3.1.2
>            Reporter: Andre Prata
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> This issue does not apply to version 3.1.0, it was introduced in version 
> 3.1.0.
>  
> In our project, we have the default configuration of the root pom.xml that 
> contains lines such as this:
> {code:java}
> <properties>
>     <java.version>11</java.version>
>     <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
> </properties>
> {code}
> These lines are still in good shape when added to the jar artifact. However, 
> upon generating the project from the archetype, we get the following (note 
> also the whitespace on the blank lines hinting at some indentation attempts, 
> not just the unexpected line breaks)
> {code:java}
> <properties>
>               
>   
>   <java.version>11</java.version>
>               
>   
>   <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
>           
> </properties>
>       
> {code}
> This issue does *not* occur in in child module pom.xml files.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to