Hi gyus,
my name is Petar Toshev Tahchiev and for the past over six months I
have
been working with Felipe Leme
on the Cactus project. It all started on the last year's Google's
Summer Of
Code where I wanted to apply
with the project of building a Cactus-Maven2-plugin and refactoring
the
build tree of cactus. However our project
wasn't voted I couldn't take part. Anyway I had some problems later
and a
few months ago I started working hard
on the project again. Through all that time I have been working on my
personal project in sourceforge [2], where
you now can reach the new, refactored, cactus trunk.
I took as a base the repository at [1], trying to make the build using
maven2. I must admit It's been a really hard work,
as the old build of cactus, using ANT was MORE than complicated.
Some of the
difficulties I met was that Maven does not
support multi-source tree projects, and that's the case of cactus:
we have a
"framework" module, and in it several
sub-modules:
j2ee-12/
j2ee-13/
j2ee-14/
share-12-13-14/
share-13-14/
and when building the different package for the different JDK, we
always use
some of the share sub-modules. Anyway,
this problem I have managed, by using uberjars. I package the
wrappers for
the different JDKs in an artifact, and then the
share submodules also. Later when building the uberjars, the
wrappers and
the share submodules are extracted and packaged
as a whole, using the assembly plugin.
I also spent a great deal of time in trying to improve the
documentation.
Maven2 has the ability to generate a site for every single
artifact. The main cactus site was very ugly when being built with
maven,
because the XDOC format differed from the
one maven recognizes (for example the <section> tag gets as
attribute a
"title", not an id and many other small changes). I spent
a lot of time trying to fix the changes, and there may be still
some places
where I have missed, so if you find the site apporopriate
we can use it.
I also added the clover plugin in the pom.xml and saw the test-
coverage was
not so big, so I also spent some time writing
a few testcases.
I also spent some time in fixing 2 of the bugs in the jira.
Another milestone in my work was making the Cactus-Ant Cargo
integration. I
researched for a few days and managed to make
it. I had a few problems with one of the Cargo components, but I
asked on
the Cargo list if it could be changed, and supplied
a patch for the Cargo 0.9 release (Vincent Massol may remember if
he is
reading this) and the patch was applied.
Another Issue I would like to mention is the building of the Cactus-
Samples
module. As I didn't have a Cactus-M2 plugin
it was practically impossible to test the samples against a real
container.
So I added profiles and used the cargo-plugin
just to start and stop the containers for now, until I make the
Cactus-M2-plugin. If you would like to test the project with a
specific container you have to specify the container as a profile, for
instance: mvn install -P tomcat5x
Also another thing I would like to mention is the Checkstyle
plugin. After
adding it to the build I found about 300 checkstyle
errors that prevented the build from passing successfully. I spent
some time
fixing those mistakes so the build now is being
build successfully with checkstyle reports.
Also I talked on the Cargo's lists about the expected release date
of Cargo
0.9 and I was explained that cargo is expected to
release any day now. So I made additional cactus-cargo.09
integration. So my
point is that if you want to test the trunk at [2]
you have to check out and install the cargo-.09 project at first.
========================================
A few weeks ago I started making the Cactus-M2-plugin. My first
attempt was
very ugly. I made it mainly because I was
qurious if It was possible of soing it that way. In the
implementation of
the mojos I just instantiated the CactifyWar/Ear tasks
and called their execute methods. (If you are really interested I
was able
to make it that way :-), though it depended on the
cactus-ant-integration module and was REALLY ugly). Then I started
anew
writing the plugin after losing two days in vain.
But my work was stalled for a while, as I moved to a new job. This
weekend I
made the cactifyWar/Ear and MergeWebXML
mojos, and placed them in the trunk of my sourceforge's repo. The
only thing
that left was the CactusTestMojo that still doesnot
work for unknown reasons to me. After extending the Surefireplugin
mojo of
maven I get a null pointer exception in the parent
mojo. After investigating it in the maven lists it turned it is a
bug in
maven. I posted an issue in the maven JIRA recently, and right
now I expect them to answer me. So I am currenty working on the maven
cactus plugin and I think that in a few weeks I will finish it.
============================
I have added a submodule for JDK 1.5 support and this will be my next
occupation (if anyone of you don't do it :-)).
Also maybe the maven1 plugin needs to be fixed as it could be
broken because
of the refactoring of the ant-integration module to use
cargo's containers.
So if we manage to fix these things and release the Cactus-1.8 it
would be a
great thing. I want some of the other cactus-committers to
review the subversion repository anf
============================
So to summon up the situation is this:I understand that there is
still lots
of work to be done, but I definitely think that we are on the right
way.
If any of the cactus-committers is able to look at the source tree
in [2]
and give his feedback if it is good
enough to port it (maybe as a branch at first) on the cactus
official repo.
So we can all continue working on it. Also it would be good
to hear from you, what else could be done for the successful
release of the
of Cactus-1.8 project - this project definitely deserves our
joint efforts for bringing it to life again.
Thank you.
P.S . I would like to thank Felipe for his support and
encouragement. And
despite he was busy enough, he found some time to guide me
on some of the issues: what needed additionaly to be done, and
where I had
made mistakes.
[1] http://svn.apache.org/repos/asf/jakarta/cactus/trunk/
[2] svn co https://mamouth.svn.sourceforge.net/svnroot/mamouth mamouth
--
Regards, Petar!
Karlovo, Bulgaria.