1 package org.apache.maven.plugins.shade.pom;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23 import java.io.Writer;
24
25 import org.apache.maven.model.Model;
26 import org.jdom2.Document;
27 import org.jdom2.Element;
28 import org.jdom2.Namespace;
29 import org.jdom2.output.Format;
30
31
32
33
34 public class PomWriter
35 {
36 public static void write( Writer w, Model newModel )
37 throws IOException
38 {
39 write( w, newModel, false );
40 }
41
42 public static void write( Writer w, Model newModel, boolean namespaceDeclaration )
43 throws IOException
44 {
45 Element root = new Element( "project" );
46
47 if ( namespaceDeclaration )
48 {
49 String modelVersion = newModel.getModelVersion();
50
51 Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
52
53 root.setNamespace( pomNamespace );
54
55 Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
56
57 root.addNamespaceDeclaration( xsiNamespace );
58
59 if ( root.getAttribute( "schemaLocation", xsiNamespace ) == null )
60 {
61 root.setAttribute( "schemaLocation",
62 "http://maven.apache.org/POM/" + modelVersion + " http://maven.apache.org/maven-v"
63 + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
64 }
65 }
66
67 Document doc = new Document( root );
68
69 MavenJDOMWriter writer = new MavenJDOMWriter();
70
71 String encoding = newModel.getModelEncoding() != null ? newModel.getModelEncoding() : "UTF-8";
72
73 Format format = Format.getPrettyFormat().setEncoding( encoding );
74
75 writer.write( newModel, doc, w, format );
76 }
77 }