quality@glassfish.java.net

java ee dependency management (Re: admin_gui not starting anymore when xercesImpl.jar present in domain1/lib/?)

From: Kristian Rink <rink_at_planconnect.de>
Date: Thu, 24 Sep 2009 08:13:27 +0200

Hi Richard, *;

Richard Kolb schrieb:
> We also had the same issue.
> I got the strangest Hibernate 'duplicate mappings' errors because
> Hibernate was in the domain lib

Oh yes, Hibernate seems to be especially strange about that, even though I
am not completely sure why... just know some of our folks doing Eclipse RCP
development, they have done quite some cursing trying to meaningfully wrap
up Hibernate into OSGi as well... :>



> 50 megs, ouch.
> I've seen some IDE's like MyEclipse and Netbeans put the strangest
> things in the pom.xml
> Maybe have a look , if you have not already. Put Maven on a diet :)

Well, we already did so - our poms in some situations by now contain more
exclusions than actual dependencies. This is one of the only things I really
have to complain about related to maven2 dependency management: I would like
to have a dependency classification, like "optional"/"required", same
eventually as the Debian packaging system, along eventually with a
"provides" field to outline which classes / components are provided by an
artifact. In our environment, where we are using slf4j to do logging, we
always have to convince maven not to include jakarta commons-logging even
though some frameworks (Spring...) depend upon it, because in our
environment the jcl-over-slf4j bridge provides a feasible implementation of
commons-logging API. This is simple to solve but kind of annoying.

Worse then, however, is that so far I failed to see a really seamless and
meaningful tooling support for deploying applications with (third-party?)
dependencies to a running app server. The only approach that really seems to
work here is an EAR which AFAIK doesn't yet work with gfv3? Some experiences
I made:

- Using war artifacts, bundling dependencies to WEB-INF/lib is pretty easy
but it quickly ends up in large files virtually all containing more or less
the same jars.

- Using EJB3 modules, you either have to make use of a plugin like maven2s
"jar-with-dependencies" to build one _huge_ EJB jar, or you have to manually
copy dependencies to your app server and hope for the best. maven2's
"copy-dependencies", about this, is the best I could so far find; the
dependency management for non-maven projects at least in NetBeans is pretty
rudimentary and stops being fun as soon as one wants to have transitive
dependencies (an ejb jar depending upon a jar depending upon a set of other
jars) all packed together meaningfully.

Somehow I am still hoping for a maven2 glassfish plugin to simply allow for
(a) deploying the application module (jar, war, ear...) automatically and
(b) copying dependent jars to the right place in the domain folder structure
if required / requested by the user... :/

Cheers,
Kristian


-- 
Dipl.-Ing.(BA) Kristian Rink * Software- und Systemingenieur
planConnect GmbH * Könneritzstr. 33 * 01067 Dresden
fon: 0351 215 203 71 * cell: 0176 2447 2771 * mail: rink_at_planconnect.de
Amtsgericht Dresden HRB: 20 015 * St.-Nr. FA DD I 201 / 116 / 05360
Geschäftsführer: Stefan Voß, Karl Stierstorfer