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.jdom.Document;
27 import org.jdom.Element;
28 import org.jdom.Namespace;
29 import org.jdom.output.Format;
30
31
32
33
34 public class PomWriter
35 {
36 public static void write( Writer w,
37 Model newModel )
38 throws IOException
39 {
40 write( w, newModel, false );
41 }
42
43 public static void write( Writer w,
44 Model newModel,
45 boolean namespaceDeclaration )
46 throws IOException
47 {
48 Element root = new Element( "project" );
49
50 if ( namespaceDeclaration )
51 {
52 String modelVersion = newModel.getModelVersion();
53
54 Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
55
56 root.setNamespace( pomNamespace );
57
58 Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
59
60 root.addNamespaceDeclaration( xsiNamespace );
61
62 if ( root.getAttribute( "schemaLocation", xsiNamespace ) == null )
63 {
64 root.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion
65 + " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
66 }
67 }
68
69 Document doc = new Document( root );
70
71 MavenJDOMWriter writer = new MavenJDOMWriter();
72
73 String encoding = newModel.getModelEncoding() != null ? newModel.getModelEncoding() : "UTF-8";
74
75 Format format = Format.getPrettyFormat().setEncoding( encoding );
76
77 writer.write( newModel, doc, w, format );
78 }
79 }