1 package org.apache.maven.plugins.mavenone;
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.archiver.MavenArchiveConfiguration;
23 import org.apache.maven.archiver.MavenArchiver;
24 import org.apache.maven.plugin.AbstractMojo;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.project.MavenProject;
27 import org.apache.maven.project.MavenProjectHelper;
28 import org.codehaus.plexus.archiver.ArchiverException;
29 import org.codehaus.plexus.archiver.jar.JarArchiver;
30 import org.codehaus.plexus.util.FileUtils;
31
32 import java.io.File;
33
34
35
36
37
38
39
40 public class MavenOnePluginMojo
41 extends AbstractMojo
42 {
43
44 private static final String[] DEFAULT_EXCLUDES = new String[]{"**/package.html"};
45
46 private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
47
48
49
50
51
52
53
54
55 private File basedir;
56
57
58
59
60
61
62
63
64 private File targetDirectory;
65
66
67
68
69
70
71
72 private String finalName;
73
74
75
76
77
78
79
80 private JarArchiver jarArchiver;
81
82
83
84
85
86
87
88
89 private MavenProject project;
90
91
92
93
94
95 private MavenProjectHelper projectHelper;
96
97
98
99
100
101
102
103 private File contentDirectory;
104
105
106
107
108
109
110 public File createArchive()
111 throws MojoExecutionException
112 {
113 File jarFile = new File( targetDirectory, finalName + ".jar" );
114
115 MavenArchiver archiver = new MavenArchiver();
116
117 archiver.setArchiver( jarArchiver );
118
119 archiver.setOutputFile( jarFile );
120
121 try
122 {
123 if ( contentDirectory.exists() )
124 {
125 archiver.getArchiver().addDirectory( contentDirectory, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
126 }
127
128 addFile( archiver, new File( basedir, "plugin.jelly" ) );
129 addFile( archiver, new File( basedir, "plugin.properties" ) );
130 addFile( archiver, new File( basedir, "project.properties" ) );
131 addFile( archiver, new File( basedir, "build.properties" ) );
132 addFile( archiver, new File( basedir, "project.xml" ) );
133 addDirectory( archiver, new File( basedir, "src/plugin-resources" ) );
134
135 archiver.createArchive( project, new MavenArchiveConfiguration() );
136
137 return jarFile;
138 }
139 catch ( Exception e )
140 {
141
142 throw new MojoExecutionException( "Error assembling JAR", e );
143 }
144 }
145
146 private static void addDirectory( MavenArchiver archiver, File file )
147 throws ArchiverException
148 {
149 if ( file.exists() )
150 {
151 archiver.getArchiver().addDirectory( file, file.getName() + "/", DEFAULT_INCLUDES,
152 FileUtils.getDefaultExcludes() );
153 }
154 }
155
156 private static void addFile( MavenArchiver archiver, File file )
157 throws ArchiverException
158 {
159 if ( file.exists() )
160 {
161 archiver.getArchiver().addFile( file, file.getName() );
162 }
163 }
164
165
166
167
168
169
170 public void execute()
171 throws MojoExecutionException
172 {
173 File jarFile = createArchive();
174
175 project.getArtifact().setFile( jarFile );
176 }
177 }