1 package org.andromda.maven.plugin.modelarchiver;
2
3 import org.apache.commons.io.FileUtils;
4 import org.apache.commons.lang.StringUtils;
5 import org.apache.maven.artifact.Artifact;
6 import org.apache.maven.plugin.AbstractMojo;
7 import org.apache.maven.project.MavenProject;
8 import org.apache.maven.project.MavenProjectHelper;
9 import org.codehaus.plexus.archiver.manager.ArchiverManager;
10
11 import java.io.File;
12 import java.io.IOException;
13 import java.util.Iterator;
14
15
16
17
18
19
20
21
22 public abstract class BaseArchiveMojo extends AbstractMojo
23 {
24
25
26
27
28
29
30 protected File modelSourceDirectory;
31
32
33
34
35
36
37 protected File workDirectory;
38
39
40
41
42
43
44 protected File outputDirectory;
45
46
47
48
49
50
51
52 protected String finalName;
53
54
55
56
57
58
59
60
61 protected MavenProject project;
62
63
64
65
66
67
68
69 protected ArchiverManager archiverManager;
70
71
72
73
74
75
76
77
78 protected MavenProjectHelper projectHelper;
79
80
81
82
83
84
85
86 protected boolean replaceExtensions;
87
88
89
90
91
92
93
94 protected void deleteFiles(String pPath, String pExtension)
95 {
96 Iterator<File> lFileIter = FileUtils.iterateFiles(new File(pPath), new String[]{pExtension}, false);
97 while (lFileIter.hasNext())
98 {
99 FileUtils.deleteQuietly(lFileIter.next());
100 }
101 }
102
103
104
105
106
107
108
109
110 protected String escapePattern(String pattern)
111 {
112 pattern = StringUtils.replace(
113 pattern,
114 ".",
115 "\\.");
116 pattern = StringUtils.replace(
117 pattern,
118 "-",
119 "\\-");
120 return pattern;
121 }
122
123
124
125
126
127
128
129
130 protected void replaceExtensions(String pReplacementExtensions, File pFile) throws IOException
131 {
132 String[] replacementExtensions = pReplacementExtensions != null ? pReplacementExtensions.split(",\\s*") : new String[0];
133
134 final String version = escapePattern(this.project.getVersion());
135 String contents = FileUtils.readFileToString(pFile);
136 for (String replacementExtension : replacementExtensions)
137 {
138 final String extension = escapePattern(replacementExtension);
139
140
141 final String extensionPattern = "((\\-" + version + ")?)" + extension + "(['\"|])";
142 final String newExtension = "\\-" + version + extension + "$3";
143 contents = contents.replaceAll(
144 extensionPattern,
145 newExtension);
146
147 contents =
148 contents.replaceAll(
149 "_Profile\\-" + version,
150 "_Profile");
151 }
152 FileUtils.writeStringToFile(pFile, contents);
153 }
154
155
156
157
158
159 protected void setArtifactFile(File newFile)
160 {
161 final Artifact artifact = this.project.getArtifact();
162
163 artifact.setFile(newFile);
164 getLog().debug("File artifact set " + newFile.getAbsolutePath() + " packaging " + project.getPackaging());
165 }
166 }