maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Preston, Dale" <>
Subject RE: Ann: diet4j -- run Maven modules directly, without gigantic jars
Date Thu, 25 Jun 2015 17:53:32 GMT

This is a great idea and very timely for me.  I'm updating our Java SDLC and our current process
manually creates shell scripts with long classpaths for dependency resolution.  We're moving
to Maven and your idea could really help.  I'll check it out and let you know how it works
for us.


-----Original Message-----
From: Johannes Ernst [] 
Sent: Tuesday, June 02, 2015 13:28
Subject: [EXTERNAL]Ann: diet4j -- run Maven modules directly, without gigantic jars

Maven is great for breaking gigantic code bases into many little modules, with identified
dependencies. This allows incremental builds etc.

And then, to run that code, we usually put all together again into a uber-mega-JAR or WAR,
or with mile-long class paths. While sometimes this makes sense, often it does not. 

diet4j can run command-line apps, and Tomcat web apps, similarly to how maven builds projects:
simply specify the name of the top project, and diet4j assembles all the other JARs automatically
for the run.

E.g. if your project hierarchy looks like this:
    Project A
        Project B
            Project C
        Project D

you can say:

> diet4j A

which will read the POM in A.jar (in ~/.m2/repository, or a location of your choosing), determine
run-time dependencies, then recursively look for B.jar, C.jar and D.jar, load them into separate
ClassLoaders, hook up dependencies and jump on the main program (if it has one) of Project

No jar-with-dependencies and stuff like that required. Usually no changes are required to
maven projects or program structure.

As I said, it may not be for all people, but it is for some who want to distribute changes
incrementally, avoid rebuilding gigantic JARs every time some small change needs to happen,
fit better into Linux-style package management etc. It’s also great for dynamically finding
and loading modules without restarting the application.

I’d love some feedback, it’s early days. <>

Thank you,

Johannes Ernst

View raw message