1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.javadoc;
20
21 import java.io.File;
22 import java.io.IOException;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.MojoFailureException;
26 import org.apache.maven.plugins.annotations.Component;
27 import org.apache.maven.plugins.annotations.LifecyclePhase;
28 import org.apache.maven.plugins.annotations.Mojo;
29 import org.apache.maven.plugins.annotations.Parameter;
30 import org.apache.maven.plugins.annotations.ResolutionScope;
31 import org.apache.maven.project.MavenProjectHelper;
32 import org.codehaus.plexus.archiver.Archiver;
33 import org.codehaus.plexus.archiver.ArchiverException;
34 import org.codehaus.plexus.archiver.manager.ArchiverManager;
35 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
36 import org.codehaus.plexus.archiver.util.DefaultFileSet;
37
38
39
40
41
42
43
44
45
46 @Mojo(
47 name = "resource-bundle",
48 defaultPhase = LifecyclePhase.PACKAGE,
49 requiresDependencyResolution = ResolutionScope.COMPILE,
50 threadSafe = true)
51 public class ResourcesBundleMojo extends AbstractJavadocMojo {
52
53
54
55
56 public static final String BUNDLE_OPTIONS_PATH = "META-INF/maven/javadoc-options.xml";
57
58
59
60
61 public static final String RESOURCES_DIR_PATH = "resources";
62
63
64
65
66
67
68 @Parameter(defaultValue = "${project.build.finalName}", readonly = true)
69 private String finalName;
70
71
72
73
74
75 @Component
76 private MavenProjectHelper projectHelper;
77
78
79
80
81 @Component
82 private ArchiverManager archiverManager;
83
84
85
86
87
88
89
90
91
92
93
94
95 @Override
96 public void doExecute() throws MojoExecutionException, MojoFailureException {
97 try {
98 buildJavadocOptions();
99 } catch (IOException e) {
100 throw new MojoExecutionException("Failed to generate javadoc-options file: " + e.getMessage(), e);
101 }
102
103 Archiver archiver;
104 try {
105 archiver = archiverManager.getArchiver("jar");
106 } catch (NoSuchArchiverException e) {
107 throw new MojoExecutionException("Failed to retrieve jar archiver component from manager.", e);
108 }
109
110 File optionsFile = getJavadocOptionsFile();
111 File bundleFile =
112 new File(getProject().getBuild().getDirectory(), finalName + "-" + getAttachmentClassifier() + ".jar");
113 try {
114 archiver.addFile(optionsFile, BUNDLE_OPTIONS_PATH);
115
116 File javadocDir = getJavadocDirectory();
117 if (javadocDir.isDirectory()) {
118 DefaultFileSet fileSet = DefaultFileSet.fileSet(javadocDir).prefixed(RESOURCES_DIR_PATH + "/");
119 archiver.addFileSet(fileSet);
120 }
121
122 archiver.setDestFile(bundleFile);
123 archiver.createArchive();
124 } catch (ArchiverException | IOException e) {
125 throw new MojoExecutionException(
126 "Failed to assemble javadoc-resources bundle archive. Reason: " + e.getMessage(), e);
127 }
128
129 projectHelper.attachArtifact(getProject(), bundleFile, getAttachmentClassifier());
130 }
131 }