1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.forgerock.doc.maven.pre;
18
19 import org.apache.commons.io.FileUtils;
20 import org.apache.maven.plugin.MojoExecutionException;
21 import org.forgerock.doc.maven.AbstractDocbkxMojo;
22 import org.twdata.maven.mojoexecutor.MojoExecutor;
23
24 import java.io.File;
25 import java.io.IOException;
26
27
28
29
30
31 public class CommonContent {
32
33
34
35
36 private AbstractDocbkxMojo m;
37
38
39
40
41 private final Executor executor;
42
43
44
45
46
47
48 public CommonContent(final AbstractDocbkxMojo mojo) {
49 m = mojo;
50 this.executor = new Executor();
51 }
52
53
54
55
56
57
58 public void execute() throws MojoExecutionException {
59
60
61
62
63
64 File sharedContentUnpackDir;
65
66 if (m.doOverwriteProjectFilesWithSharedContent()) {
67 sharedContentUnpackDir = m.getDocbkxModifiableSourcesDirectory();
68 executor.unpack(m.path(sharedContentUnpackDir));
69 } else {
70 try {
71
72 sharedContentUnpackDir = createTemporaryDirectory();
73 executor.unpack(m.path(sharedContentUnpackDir));
74
75
76
77 FileUtils.copyDirectory(m.getDocbkxModifiableSourcesDirectory(), sharedContentUnpackDir);
78 FileUtils.deleteDirectory(m.getDocbkxModifiableSourcesDirectory());
79 FileUtils.moveDirectory(sharedContentUnpackDir, m.getDocbkxModifiableSourcesDirectory());
80 } catch (IOException e) {
81 throw new MojoExecutionException("Failed to unpack common content.", e);
82 }
83 }
84 }
85
86
87
88
89
90
91
92 private File createTemporaryDirectory() throws IOException {
93 File temporaryDirectory = new File(
94 m.getBuildDirectory(), Long.toString(System.nanoTime()));
95
96 if (!temporaryDirectory.mkdir() && temporaryDirectory.canWrite()) {
97 throw new IOException("Failed to create temporary directory: "
98 + temporaryDirectory.getAbsolutePath());
99 }
100
101 return temporaryDirectory;
102 }
103
104
105
106
107 class Executor extends MojoExecutor {
108
109
110
111
112
113
114
115 public void unpack(final String outputDir) throws MojoExecutionException {
116
117 executeMojo(
118 plugin(
119 groupId("org.apache.maven.plugins"),
120 artifactId("maven-dependency-plugin"),
121 version(m.getMavenDependencyVersion())),
122 goal("unpack"),
123 configuration(
124 element("artifactItems",
125 element("artifactItem",
126 element("groupId", m.getCommonContentGroupId()),
127 element("artifactId", m.getCommonContentArtifactId()),
128 element("version", m.getCommonContentVersion()),
129 element("type", "jar"),
130 element("overWrite", "true"),
131 element("outputDirectory", outputDir),
132 element("includes", "**/*.*")))),
133 executionEnvironment(m.getProject(), m.getSession(), m.getPluginManager()));
134 }
135 }
136 }