1 |
Hi all, |
2 |
Here's my final report for the Gentoo Maven Integration project for |
3 |
finishing the work under Google Summer of Code and starting move in to |
4 |
a voluntary position. |
5 |
The goal of this project is to build maven and it's huge number of |
6 |
dependencies from source, and then facilitate the packagers for |
7 |
packaging maven-based Java packages. There are two eclasses which will |
8 |
facilitate bootstrapping maven along with building maven-based |
9 |
packages, and packaging Maven plugins. These eclasses address some |
10 |
fundamental issues of incompatibilities between Gentoo build system |
11 |
and Maven build system. |
12 |
|
13 |
There were two main goals for the project. One is building |
14 |
maven-from-source. It is now completed and has been thoroughly tested. |
15 |
There are around 40+ ebuilds that are direct dependencies of Maven |
16 |
which were packaged/bumped during the project period. General users of |
17 |
maven can have the full benefit from this package now. Please file |
18 |
bugs at https://bugs.gentoo.org/ if you find any. |
19 |
|
20 |
The second phase was a lengthy process and the scope wasn't fit for |
21 |
one and half months time. But with mentors' blessing, I've made a |
22 |
quite a big progress and was able to emerge a minimal package built |
23 |
via native Maven. |
24 |
Let me describe the surface details of the second phase. The idea was |
25 |
to facilitate the packagers to package maven-based packages. This has |
26 |
been a long-time blocker for Gentoo-Java (which extends to more than |
27 |
3-4 years). For this phase, we needed several requirements including |
28 |
dependency management issues and rewriting of pom.xml to match |
29 |
Gentoo's needs. One requirement in it was the need to have a mechanism |
30 |
to use the installed system jars instead of downloading the jars from |
31 |
maven repos. One another is that pom needs to respect the Gentoo SLOT |
32 |
system. Further, configuration details needed to be added to tell the |
33 |
JDK and JRE versions needed for building (ie need to add config bits |
34 |
to maven-compiler-plugin section in the pom). And, then it needs |
35 |
several maven plugins to build packages. There were enormous amount of |
36 |
plugins available that most of them need special attention separately. |
37 |
For the second phase, the hard part is over. And, as I said, I was |
38 |
able to emerge a minimal maven-based implementation. Maven isn't much |
39 |
cooperative when it comes to dependency management, but our solution |
40 |
worked well. |
41 |
|
42 |
Along with that, the first iteration of work is complete. I'm hoping |
43 |
to be the maintainer for Maven under Gentoo Java herd for the |
44 |
foreseeable future. And, I'm eagerly waiting to wear the Gentoo |
45 |
Developer hat one day. I'm interested in knowing the generic plan for |
46 |
recruiting developers who come via Summer of Code as well. |
47 |
|
48 |
There are few things to be done to bring the use of the Maven |
49 |
integration to it's full potential. These are more like plug-ins to |
50 |
the core base, and beautifying the process. I need to make new plans |
51 |
for these with help from Java herd. |
52 |
* There's only five maven plugins has been packaged. Have a fresh |
53 |
look at m-surefire-p. Needs to add all other plugins. |
54 |
* Currently, when MAVEN_PARENTPOM_UNIQUE_ID is set to rewrite |
55 |
<parent> node of the pom, it rewrites all the poms in the project |
56 |
including sub-modules. The most probable usecase is that rewrite the |
57 |
parent element of the top-level/aggregator pom. The configuration bits |
58 |
needed are already there (-w option), but the implementation needs to |
59 |
be done. |
60 |
* Merge the separate ebuilds of maven-2.2.1 maven-2.2.1 release in |
61 |
to one. There are around 20+ ebuilds dedicated for this. These ebuilds |
62 |
probably won't be needed separately so it's ok to merge these |
63 |
together. Need to evaluate possibility of issues of having all these |
64 |
together. |
65 |
|
66 |
Here are some references if you are interested in getting deeper in |
67 |
Maven in Gentoo. |
68 |
* The wiki 1 - Developer and User guide for Maven in Gentoo - |
69 |
https://overlays.gentoo.org/proj/java/wiki/Maven_Integration |
70 |
* The wiki 2 - Manpage for java-maven-2 eclass - |
71 |
http://overlays.gentoo.org/proj/java/wiki/Maven_Eclass_Manpage |
72 |
* Repository 1 - gsoc-maven-overlay - |
73 |
https://overlays.gentoo.org/svn/proj/java/gsoc-maven-overlay/ |
74 |
* Repository 2 - Branch for Javatoolkit - |
75 |
http://overlays.gentoo.org/proj/java/browser/projects/javatoolkit/branches/kasun/ |
76 |
* TracBrowser view - |
77 |
http://overlays.gentoo.org/proj/java/browser/gsoc-maven-overlay/ |
78 |
|
79 |
At the end of these thrilling three months full of excitement, I'd |
80 |
like to remind some people who helped me vastly. Forgive me if I |
81 |
missed someone. I was new to Gentoo, and all the help you've given was |
82 |
really useful. Kiorky, (the original author, who I dragged in to |
83 |
Summer of Code to be a mentor ;) ), and Serkan, my two mentors, has |
84 |
done hell of a job to push me and this project that it is today. You |
85 |
always had my back when I was in need. |
86 |
I must admit that the Gentoo Java herd, and Gentoo in general was very |
87 |
friendly and has promptly given me help and advice when I was in |
88 |
doubt. ali_bush, Sera, Chewi, and Betelgeuse; thanks for your support |
89 |
you have given me so far. Thanks bonsaikitten for providing server |
90 |
space to host some source tarballs at gentooexperimental.org. |
91 |
Appreciate the work you've done Donnie, and of course Gentoo |
92 |
Foundation and Google! |
93 |
|
94 |
Regards, |
95 |
--Kasun |
96 |
|
97 |
-- |
98 |
~~~*******'''''''''''''*******~~~ |
99 |
Kasun Gajasinghe, |
100 |
University of Moratuwa, |
101 |
Sri Lanka. |
102 |
Blog: http://blog.kasunbg.org |
103 |
Twitter: http://twitter.com/kasunbg |