1 |
%define docs 0 |
2 |
|
3 |
%global debug_package %{nil} |
4 |
|
5 |
Name: maven |
6 |
Version: 3.0.3 |
7 |
Release: %mkrel 6 |
8 |
Summary: Java project management and project comprehension tool |
9 |
|
10 |
Group: Development/Java |
11 |
License: ASL 2.0 and MIT and BSD |
12 |
URL: http://maven.apache.org/ |
13 |
# Source URL is for testing only, final version will be in different place: |
14 |
# http://www.apache.org/dyn/closer.cgi/maven/source/apache-%{name}-%{version}-src.tar.gz |
15 |
Source0: http://www.apache.org/dyn/closer.cgi/maven/source/apache-%{name}-%{version}-src.tar.gz |
16 |
Source1: maven-bash-completion |
17 |
|
18 |
# custom resolver java files |
19 |
# source: git clone git://fedorapeople.org/~sochotni/maven-javadir-resolver/ |
20 |
Source100: JavadirWorkspaceReader.java |
21 |
Source101: MavenJPackageDepmap.java |
22 |
|
23 |
# empty files for resolving to nothing |
24 |
Source104: %{name}-empty-dep.pom |
25 |
Source105: %{name}-empty-dep.jar |
26 |
|
27 |
# 2xx for created non-buildable sources |
28 |
Source200: %{name}-script |
29 |
Source201: %{name}-script-local |
30 |
Source202: %{name}-script-rpmbuild |
31 |
|
32 |
# Other included files |
33 |
Source250: repo-metadata.tar.xz |
34 |
|
35 |
# Patch1XX could be upstreamed probably |
36 |
# Patch15X are already upstream |
37 |
Patch150: 0001-Add-plugin-api-deps.patch |
38 |
|
39 |
# Patch2XX for non-upstreamable patches |
40 |
Patch200: 0002-Use-custom-resolver.patch |
41 |
|
42 |
BuildRequires: maven |
43 |
BuildRequires: maven-parent |
44 |
BuildRequires: maven-assembly-plugin |
45 |
BuildRequires: maven-compiler-plugin |
46 |
BuildRequires: maven-install-plugin |
47 |
BuildRequires: maven-jar-plugin |
48 |
BuildRequires: maven-javadoc-plugin |
49 |
BuildRequires: maven-resources-plugin |
50 |
BuildRequires: maven-site-plugin |
51 |
BuildRequires: maven-surefire-plugin |
52 |
BuildRequires: maven-surefire-provider-junit4 |
53 |
BuildRequires: buildnumber-maven-plugin |
54 |
BuildRequires: plexus-containers-component-metadata >= 1.5.5 |
55 |
BuildRequires: plexus-containers-container-default |
56 |
BuildRequires: animal-sniffer >= 1.6-5 |
57 |
BuildRequires: mojo-parent |
58 |
BuildRequires: atinject |
59 |
BuildRequires: aether >= 1.11 |
60 |
BuildRequires: async-http-client |
61 |
BuildRequires: sonatype-oss-parent |
62 |
BuildRequires: sisu >= 2.1.1-2 |
63 |
BuildRequires: google-guice >= 3.0 |
64 |
BuildRequires: hamcrest |
65 |
BuildRequires: apache-commons-parent |
66 |
BuildRequires: maven2-common-poms |
67 |
BuildRequires: apache-commons-cli |
68 |
BuildRequires: plexus-classworlds >= 2.4 |
69 |
BuildRequires: apache-commons-cli |
70 |
BuildRequires: guava |
71 |
BuildRequires: hamcrest |
72 |
BuildRequires: nekohtml |
73 |
BuildRequires: plexus-cipher |
74 |
BuildRequires: plexus-containers-component-annotations |
75 |
BuildRequires: plexus-containers-container-default |
76 |
BuildRequires: plexus-interpolation |
77 |
BuildRequires: plexus-sec-dispatcher |
78 |
BuildRequires: plexus-utils |
79 |
BuildRequires: xbean |
80 |
BuildRequires: xerces-j2 |
81 |
BuildRequires: maven-wagon |
82 |
BuildRequires: aether >= 1.11 |
83 |
BuildRequires: async-http-client |
84 |
BuildRequires: sonatype-oss-parent |
85 |
BuildRequires: sisu >= 2.1.1-2 |
86 |
BuildRequires: google-guice >= 3.0 |
87 |
BuildRequires: atinject |
88 |
BuildRequires: animal-sniffer >= 1.6-5 |
89 |
BuildRequires: mojo-parent |
90 |
BuildRequires: hamcrest |
91 |
BuildRequires: apache-commons-parent |
92 |
BuildRequires: forge-parent |
93 |
BuildRequires: spice-parent |
94 |
BuildRequires: backport-util-concurrent |
95 |
BuildRequires: maven-shared-common-artifact-filters |
96 |
BuildRequires: mojo-signatures |
97 |
BuildRequires: plexus-digest |
98 |
BuildRequires: maven-surefire-provider-junit |
99 |
BuildRequires: qdox |
100 |
BuildRequires: apache-commons-jxpath |
101 |
BuildRequires: maven-scm |
102 |
BuildRequires: easymock |
103 |
BuildRequires: maven-shared-io |
104 |
BuildRequires: maven-shared-repository-builder |
105 |
BuildRequires: maven-shared-file-management |
106 |
|
107 |
Requires: java >= 0:1.6.0 |
108 |
Requires: maven-parent |
109 |
Requires: plexus-classworlds >= 2.4 |
110 |
Requires: apache-commons-cli |
111 |
Requires: guava |
112 |
Requires: hamcrest |
113 |
Requires: nekohtml |
114 |
Requires: plexus-cipher |
115 |
Requires: plexus-containers-component-annotations |
116 |
Requires: plexus-containers-container-default |
117 |
Requires: plexus-interpolation |
118 |
Requires: plexus-sec-dispatcher |
119 |
Requires: plexus-utils |
120 |
Requires: xbean |
121 |
Requires: xerces-j2 |
122 |
Requires: maven-wagon |
123 |
Requires: aether >= 1.11 |
124 |
Requires: async-http-client |
125 |
Requires: sonatype-oss-parent |
126 |
Requires: sisu >= 2.1.1-2 |
127 |
Requires: google-guice >= 3.0 |
128 |
Requires: atinject |
129 |
Requires: animal-sniffer >= 1.6-5 |
130 |
Requires: mojo-parent |
131 |
Requires: hamcrest |
132 |
Requires: apache-commons-parent |
133 |
|
134 |
%description |
135 |
Maven is a software project management and comprehension tool. Based on the |
136 |
concept of a project object model (POM), Maven can manage a project's build, |
137 |
reporting and documentation from a central piece of information. |
138 |
|
139 |
%if %docs |
140 |
%package javadoc |
141 |
Summary: API documentation for %{name} |
142 |
Group: Development/Java |
143 |
Requires: jpackage-utils |
144 |
|
145 |
%description javadoc |
146 |
%{summary}. |
147 |
%endif |
148 |
|
149 |
%prep |
150 |
%setup -q -n apache-%{name}-%{version}%{?ver_add} |
151 |
%patch150 -p1 |
152 |
%patch200 -p1 |
153 |
|
154 |
# get custom resolver in place |
155 |
mkdir -p maven-aether-provider/src/main/java/org/apache/maven/artifact/resolver \ |
156 |
maven-aether-provider/src/main/java/org/apache/maven/artifact/repository |
157 |
|
158 |
cp %{SOURCE100} maven-aether-provider/src/main/java/org/apache/maven/artifact/resolver |
159 |
cp %{SOURCE101} maven-aether-provider/src/main/java/org/apache/maven/artifact/repository |
160 |
|
161 |
# by adding our things this has become compile dep |
162 |
sed -i 's:<scope>runtime</scope>::' maven-core/pom.xml |
163 |
|
164 |
# not really used during build, but a precaution |
165 |
rm maven-ant-tasks-*.jar |
166 |
|
167 |
# fix line endings |
168 |
sed -i 's:\r::' *.txt |
169 |
|
170 |
# fix for animal-sniffer (we don't generate 1.5 signatures) |
171 |
sed -i 's:check-java-1.5-compat:check-java-1.6-compat:' pom.xml |
172 |
|
173 |
pushd apache-maven |
174 |
rm src/bin/*bat |
175 |
sed -i 's:\r::' src/conf/settings.xml |
176 |
|
177 |
# Update shell scripts to use unversioned classworlds |
178 |
sed -i -e s:'-classpath "${M2_HOME}"/boot/plexus-classworlds-\*.jar':'-classpath "${M2_HOME}"/boot/plexus-classworlds.jar':g \ |
179 |
src/bin/mvn* |
180 |
popd |
181 |
|
182 |
%build |
183 |
mvn-rpmbuild -e install |
184 |
#javadoc:aggregate |
185 |
|
186 |
mkdir m2home |
187 |
(cd m2home |
188 |
tar xvf ../apache-maven/target/*tar.gz |
189 |
chmod -x apache-%{name}-%{version}%{?ver_add}/conf/settings.xml |
190 |
) |
191 |
|
192 |
|
193 |
%install |
194 |
export M2_HOME=$(pwd)/m2home/apache-maven-%{version}%{?ver_add} |
195 |
|
196 |
# maven2 directory in /usr/share/java |
197 |
install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name} |
198 |
|
199 |
# put global m2 config into /etc and symlink it later |
200 |
install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir} |
201 |
mv apache-maven/src/bin/m2.conf $RPM_BUILD_ROOT%{_sysconfdir}/ |
202 |
########### |
203 |
# M2_HOME # |
204 |
########### |
205 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name} |
206 |
|
207 |
################# |
208 |
# Repo metadata # |
209 |
################# |
210 |
install -m 755 %{SOURCE250} $RPM_BUILD_ROOT%{_datadir}/%{name}/ |
211 |
|
212 |
|
213 |
############### |
214 |
# M2_HOME/bin # |
215 |
############### |
216 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/bin |
217 |
cp -a $M2_HOME/bin/* $RPM_BUILD_ROOT%{_datadir}/%{name}/bin |
218 |
|
219 |
ln -sf %{_sysconfdir}/m2.conf $RPM_BUILD_ROOT%{_datadir}/%{name}/bin/m2.conf |
220 |
|
221 |
|
222 |
################ |
223 |
# M2_HOME/boot # |
224 |
################ |
225 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/boot |
226 |
|
227 |
# this dangling symlink will be filled in by Requires |
228 |
(cd $RPM_BUILD_ROOT%{_datadir}/%{name}/boot |
229 |
ln -sf `build-classpath plexus/classworlds` plexus-classworlds.jar |
230 |
) |
231 |
|
232 |
|
233 |
################ |
234 |
# M2_HOME/conf # |
235 |
################ |
236 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/conf |
237 |
cp -a $M2_HOME/conf/* $RPM_BUILD_ROOT%{_datadir}/%{name}/conf/ |
238 |
|
239 |
############### |
240 |
# M2_HOME/lib # |
241 |
############### |
242 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/lib |
243 |
|
244 |
# jdom is needed for our custom resolving code only |
245 |
(cd $RPM_BUILD_ROOT%{_datadir}/%{name}/lib |
246 |
|
247 |
build-jar-repository -s -p . aether/api aether/connector-wagon aether/impl aether/spi aether/util \ |
248 |
commons-cli guava google-guice hamcrest/core nekohtml plexus/plexus-cipher \ |
249 |
plexus/containers-component-annotations plexus/containers-container-default \ |
250 |
plexus/interpolation plexus/plexus-sec-dispatcher plexus/utils \ |
251 |
sisu/sisu-inject-bean sisu/sisu-inject-plexus maven-wagon/file \ |
252 |
maven-wagon/http-lightweight maven-wagon/http-shared maven-wagon/provider-api \ |
253 |
xbean/xbean-reflect xerces-j2 jdom xml-commons-apis atinject |
254 |
if [ ! -d ext ]; then |
255 |
mkdir ext/ |
256 |
fi |
257 |
) |
258 |
|
259 |
################ |
260 |
# M2_HOME/poms # |
261 |
#*############## |
262 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/poms |
263 |
|
264 |
######################## |
265 |
# /etc/maven/fragments # |
266 |
######################## |
267 |
install -dm 755 $RPM_BUILD_ROOT/%{_sysconfdir}/maven/fragments |
268 |
|
269 |
############################## |
270 |
# /usr/share/java repository # |
271 |
############################## |
272 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository |
273 |
ln -s %{_javadir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository/JPP |
274 |
|
275 |
############################## |
276 |
# /usr/share/java-jni repository # |
277 |
############################## |
278 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-java-jni |
279 |
ln -s %{_javajnidir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-java-jni/JPP |
280 |
|
281 |
############################## |
282 |
# _libdir/java repository # |
283 |
############################## |
284 |
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-jni |
285 |
ln -s %{_jnidir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-jni/JPP |
286 |
|
287 |
################## |
288 |
# javadir/maven # |
289 |
#*################ |
290 |
install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name} |
291 |
|
292 |
####################### |
293 |
# javadir/maven/poms # |
294 |
#*##################### |
295 |
ln -s %{_datadir}/%{name}/poms $RPM_BUILD_ROOT%{_javadir}/%{name}/poms |
296 |
|
297 |
# for our custom resolver to remove dependencies we need empty jar and |
298 |
# pom file |
299 |
install -m 644 %{SOURCE104} $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.maven-empty-dep.pom |
300 |
install -m 644 %{SOURCE105} $RPM_BUILD_ROOT%{_javadir}/%{name}/empty-dep.jar |
301 |
|
302 |
############ |
303 |
# /usr/bin # |
304 |
############ |
305 |
install -dm 755 $RPM_BUILD_ROOT%{_bindir} |
306 |
|
307 |
# Wrappers |
308 |
cp -af %{SOURCE200} $RPM_BUILD_ROOT%{_bindir}/mvn3 |
309 |
cp -af %{SOURCE201} $RPM_BUILD_ROOT%{_bindir}/mvn-local |
310 |
cp -af %{SOURCE202} $RPM_BUILD_ROOT%{_bindir}/mvn-rpmbuild |
311 |
|
312 |
################### |
313 |
# Individual jars # |
314 |
################### |
315 |
|
316 |
for module in maven-aether-provider maven-artifact maven-compat \ |
317 |
maven-core maven-embedder maven-model \ |
318 |
maven-model-builder maven-plugin-api \ |
319 |
maven-repository-metadata maven-settings \ |
320 |
maven-settings-builder;do |
321 |
|
322 |
pushd $module |
323 |
install -m 644 target/$module-%{version}%{?ver_add}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$module.jar |
324 |
ln -s %{_javadir}/%{name}/$module.jar $RPM_BUILD_ROOT%{_datadir}/%{name}/lib/$module.jar |
325 |
install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$module.pom |
326 |
%add_to_maven_depmap org.apache.maven $module %{version} JPP/%{name} $module |
327 |
popd |
328 |
done |
329 |
|
330 |
# maven pom |
331 |
install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-maven.pom |
332 |
%add_to_maven_depmap org.apache.maven maven %{version} JPP/%{name} maven |
333 |
|
334 |
%if %docs |
335 |
# javadocs |
336 |
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name} |
337 |
cp -pr target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name} |
338 |
%endif |
339 |
|
340 |
# Install bash-completion |
341 |
install -Dm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/bash_completion.d/%{name} |
342 |
|
343 |
%files |
344 |
%defattr(-,root,root,-) |
345 |
%doc LICENSE.txt NOTICE.txt README.txt |
346 |
%attr(0755,root,root) %{_bindir}/mvn3 |
347 |
%attr(0755,root,root) %{_bindir}/mvn-local |
348 |
%attr(0755,root,root) %{_bindir}/mvn-rpmbuild |
349 |
%dir %{_datadir}/%{name} |
350 |
%dir %{_datadir}/%{name}/bin |
351 |
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvn |
352 |
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvnyjp |
353 |
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvnDebug |
354 |
%{_datadir}/%{name}/bin/*.conf |
355 |
%config(noreplace) %{_sysconfdir}/m2.conf |
356 |
%{_datadir}/%{name}/boot |
357 |
%{_datadir}/%{name}/conf |
358 |
%{_datadir}/%{name}/lib |
359 |
%{_datadir}/%{name}/poms |
360 |
%{_datadir}/%{name}/repository |
361 |
%{_datadir}/%{name}/repository-jni |
362 |
%{_datadir}/%{name}/repository-java-jni |
363 |
%config %{_mavendepmapfragdir}/%{name} |
364 |
%{_javadir}/%{name} |
365 |
%{_datadir}/%{name}/repo-metadata.tar.xz |
366 |
%config(noreplace) %{_sysconfdir}/bash_completion.d/%{name} |
367 |
|
368 |
%if %docs |
369 |
%files javadoc |
370 |
%defattr(-,root,root,-) |
371 |
%doc LICENSE.txt |
372 |
%{_javadocdir}/%{name} |
373 |
%endif |
374 |
|