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 public class PomWriter
33 {
34 public static void write( Writer w,
35 Model newModel )
36 throws IOException
37 {
38 write( w, newModel, false );
39 }
40
41 public static void write( Writer w,
42 Model newModel,
43 boolean namespaceDeclaration )
44 throws IOException
45 {
46 Element root = new Element( "project" );
47
48 if ( namespaceDeclaration )
49 {
50 String modelVersion = newModel.getModelVersion();
51
52 Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
53
54 root.setNamespace( pomNamespace );
55
56 Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
57
58 root.addNamespaceDeclaration( xsiNamespace );
59
60 if ( root.getAttribute( "schemaLocation", xsiNamespace ) == null )
61 {
62 root.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion
63 + " http://maven.apache.org/maven-v" + 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 }