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