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 import org.codehaus.plexus.archiver.util.DefaultFileSet;
35
36 import java.io.File;
37 import java.io.IOException;
38
39
40
41
42
43
44
45
46
47 @Mojo( name = "resource-bundle", defaultPhase = LifecyclePhase.PACKAGE,
48 requiresDependencyResolution = ResolutionScope.COMPILE, threadSafe = true )
49 public class ResourcesBundleMojo
50 extends AbstractJavadocMojo
51 {
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()
97 throws MojoExecutionException, MojoFailureException
98 {
99 try
100 {
101 buildJavadocOptions();
102 }
103 catch ( IOException e )
104 {
105 throw new MojoExecutionException( "Failed to generate javadoc-options file: " + e.getMessage(), e );
106 }
107
108 Archiver archiver;
109 try
110 {
111 archiver = archiverManager.getArchiver( "jar" );
112 }
113 catch ( NoSuchArchiverException e )
114 {
115 throw new MojoExecutionException( "Failed to retrieve jar archiver component from manager.", e );
116 }
117
118 File optionsFile = getJavadocOptionsFile();
119 File bundleFile =
120 new File( getProject().getBuild().getDirectory(), finalName + "-" + getAttachmentClassifier() + ".jar" );
121 try
122 {
123 archiver.addFile( optionsFile, BUNDLE_OPTIONS_PATH );
124
125 File javadocDir = getJavadocDirectory();
126 if ( javadocDir.isDirectory() )
127 {
128 DefaultFileSet fileSet = DefaultFileSet.fileSet( javadocDir ).prefixed( RESOURCES_DIR_PATH + "/" );
129 archiver.addFileSet( fileSet );
130 }
131
132 archiver.setDestFile( bundleFile );
133 archiver.createArchive();
134 }
135 catch ( ArchiverException | IOException e )
136 {
137 throw new MojoExecutionException( "Failed to assemble javadoc-resources bundle archive. Reason: "
138 + e.getMessage(), e );
139 }
140
141 projectHelper.attachArtifact( getProject(), bundleFile, getAttachmentClassifier() );
142 }
143 }