On Aug 30, 2007, at 6:05 PM, Jeff Genender wrote:
Hi,
I was building a 3rd party application with a dependency on the
Geronimo
specs (jee)...and I could not get it to build because it was
looking for
axis-saaj-1.3-r562247
For the life of me, I thought I had that usual maven corrupt repo
issues
and I wiped out my local repo...a number of times. I began looking
through repos and sure enough it didn't exist. Well..I decided to
look
in our pom and I found:
<axis2Version>1.3-r562247</axis2Version>
Further discussion with others resulted in finding that we have a
"special" repository that pulls these special versions. (Ok I forgot
about that).
This is going to be a problem for anyone who has a dependency on our
jars (ie. wanting to use the specs jars for a web applications, etc).
If I (a committer) had to go through this much trouble trying to
figure
out how to get that dependency...I can't imagine what the standard
user
will go through when writing a web or webservices application.
The point I am making here is if we are going to have special versions
of jars, we need to make these more readily available.
I see your point. And agree that it's a general problem. Vamsi was
having this same general problem with the Tuscany plugin, recently.
I'm surprised that you get to this through a geronimo spec, though. I
wouldn't have predicted that. In fact, it seems wrong... What's the
chain from specs to geronimo?
That said, we'd definitely have a problem with any 2.0.1 server
artifact...
Here are some options I thought of:
A) Place the special jars in central so they are automatically
available
to others. (Easiest approach for the user - but we are going to
have to
convince other projects to put them out into their locations - that
may
prove difficult).
Agreed that it's best for the user, but I think it's next to
impossible. I think we'd accept artifacts from other projects and
place them in our space...
B) Heavily, heavily document how to get around this problem by adding
our repo to their pom. This should be easily Googled and placed in a
FAQ, because I would hazard to guess this will be a frequent question.
(probably the easiest approach for us, but this needs to be a short
term
solution - and its still a PITA for our users).
Probably have to do that for 2.0.1 resources regardless.
C) Convince the other projects to get their releases in order and get
good versions of their product on central. (Should do this
regardless of
any other option).
I think we've done that and are doing that. Axis2, JPA, etc have
shipped, etc. So G 2.0.2 would be better than 2.0.1 in this regard.
However, I think we'll always have a tension between getting a
release out and getting all of our dependencies to line up. For a
major release like a 2.0, I think it's highly unlikely that we'll get
all dependencies to a "released" level...
D) Rename our special versions to g-axis-saaj-1.3-r562247 and house
those under our own control (org.apache.geronimo...) in central on our
next build (2.0.2). (The easy and quick, and very temprary fix!)
This is probably my favored option. I guess another option would be
not to declare these artifacts as maven dependencies. It's not like
they have poms, etc. However, would present their own set of issues.
Definitely beyond my maven capabilities...
--kevan