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
96 private MavenProjectHelper projectHelper;
97
98
99
100
101
102
103
104 private File contentDirectory;
105
106
107
108
109
110
111 public File createArchive()
112 throws MojoExecutionException
113 {
114 File jarFile = new File( targetDirectory, finalName + ".jar" );
115
116 MavenArchiver archiver = new MavenArchiver();
117
118 archiver.setArchiver( jarArchiver );
119
120 archiver.setOutputFile( jarFile );
121
122 try
123 {
124 if ( contentDirectory.exists() )
125 {
126 archiver.getArchiver().addDirectory( contentDirectory, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
127 }
128
129 addFile( archiver, new File( basedir, "plugin.jelly" ) );
130 addFile( archiver, new File( basedir, "plugin.properties" ) );
131 addFile( archiver, new File( basedir, "project.properties" ) );
132 addFile( archiver, new File( basedir, "build.properties" ) );
133 addFile( archiver, new File( basedir, "project.xml" ) );
134 addDirectory( archiver, new File( basedir, "src/plugin-resources" ) );
135
136 archiver.createArchive( project, new MavenArchiveConfiguration() );
137
138 return jarFile;
139 }
140 catch ( Exception e )
141 {
142
143 throw new MojoExecutionException( "Error assembling JAR", e );
144 }
145 }
146
147 private static void addDirectory( MavenArchiver archiver, File file )
148 throws ArchiverException
149 {
150 if ( file.exists() )
151 {
152 archiver.getArchiver().addDirectory( file, file.getName() + "/", DEFAULT_INCLUDES,
153 FileUtils.getDefaultExcludes() );
154 }
155 }
156
157 private static void addFile( MavenArchiver archiver, File file )
158 throws ArchiverException
159 {
160 if ( file.exists() )
161 {
162 archiver.getArchiver().addFile( file, file.getName() );
163 }
164 }
165
166
167
168
169
170
171 public void execute()
172 throws MojoExecutionException
173 {
174 File jarFile = createArchive();
175
176 project.getArtifact().setFile( jarFile );
177 }
178 }