On Mon, Dec 16, 2002 at 05:22:38PM +0000, Emmanuel Venisse wrote: > I rename the thread for Pete.
Thanks, I would never have noticed otherwise! See comments inlined below. > -----Message d'origine----- > De: "Siegfried_G�schl" <[EMAIL PROTECTED]> > A: "Turbine Maven Users List" <[EMAIL PROTECTED]> > Date: 16/12/02 > Objet: Re: Rep:Re: Rep:New Maven Plugins available ... > > I should call my plugin underjar since it uses the low-tech approach > of unpacking all dependent JARs ... :-) The uberjar plugin utilizes Classworlds, http://classworlds.werken.com, courtesy of Bob and Jason. Basically, uberjar packs all of your project's dependencies into one super jar. This super jar can then be executed on the command line as follows: java -jar uber.jar No need to distribute anything other than the single uberjar. Everything else is taken care of automagically. Ok, so not really, a custom protocol handler and some bootstrap code do the real work. Here is the layout of the uber jar: ./ WORLDS-INF/ classworlds.jar conf/ classworlds.conf lib/ myapp.jar dep1.jar dep2.jar dep3.jar ... com/ werken/ classworlds/ boot/ Bootstrapper.class InitialClassLoader.class protocol/ jar/ Handler.class JarUrlConnection.class You'll notice that your project and its dependencies are located in the WORLDS-INF/lib directory (in JAR files). You'll also notice the classworlds JAR and configuration files, as well as the four werken classes in the root of the uber jar. These classes are the magic that bootstraps classworlds which handles the setting of your classpath. The classpath includes all of the JARs in the lib directory by default. > +) Does classworlds handlk the nasty mail.jar problem - mail > integration fails if I pack the mail.jar into the executable JAR - > blows up reading the configuration ... :-( I'd say give it a try. The classpath is set to each of the JARs, for example, I have log4j.properties file in the root of myapp.jar, and log4j has no problem discovering it. > +) Does uberjar supports the exclusion of JARs?! Not at the moment. It packs all of your dependencies so that the application can run standalone. You can provide your own custom classworlds.conf which you can groom to exclude certain JARs from the classpath if needed. Thanks, Pete -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
