This is an interesting idea, and there seem to be a number of plugins for Maven 
that deal with release/build/deploy automation.

Looking around to learn more about this I found this interesting intro 
presentation that talks about the Maven release plugin, plus plugins for other 
tools like Codehaus Cargo and LiquiBase (with a nice little intro to LiquiBase, 
which is very cool BTW):

http://www.slideshare.net/wakaleo/automated-deployment-with-maven-going-the-whole-nine-yards

-David


On Jul 13, 2011, at 3:39 PM, Eric Bowman wrote:

> Yes.  We version our changes of ofbiz in a mavenesque way, and intend to use 
> the maven release plugin to generate releases which get "deployed" (in maven 
> terminology) to a repository, from which they get deployed to real servers.
> 
> On 13 Jul 2011, at 15:18, David E Jones wrote:
> 
>> 
>> Is part of the intent to use the Maven release plugin for deployment and 
>> such as well?
>> 
>> -David
>> 
>> 
>> On Jul 13, 2011, at 3:12 PM, Eric Bowman wrote:
>> 
>>> Hi,
>>> 
>>> One other point: this tool is currently useful against ofbiz "as-is", in 
>>> order to build software that depends on it, using maven.  Converting ofbiz 
>>> to use maven is a considerably bigger project.
>>> 
>>> On 13 Jul 2011, at 15:01, David E Jones wrote:
>>> 
>>>> 
>>>> I know various people have expressed interest in Maven over the years. 
>>>> From a quick search I see such discussions going back to 2003!
>>>> 
>>>> OFBiz would definitely benefit from more modularization, and Maven may be 
>>>> able to help with that. However, it is just a tool and would still require 
>>>> significant work in addition to what Eric describes below to clean up 
>>>> higher-level OFBiz artifacts like services and screens and such to make 
>>>> the dependency tree clean.
>>>> 
>>>> Based on the build-time dependencies Eric has generated an interesting 
>>>> graph that he sent to me, and it turns out to be a pretty good graph of 
>>>> component dependencies (even though technically if everything were written 
>>>> in the way intended by the framework, there wouldn't be so many build-time 
>>>> dependencies like this). The graph is actually better than the old old one 
>>>> I hand-rolled (that is in the Component and Component Set Dependencies 
>>>> document in the OFBADMIN space on Confluence).
>>>> 
>>>> Getting back to the point, does anyone have an opinion on:
>>>> 
>>>> 1. better modularizing OFBiz
>>>> 2. using Maven for build and/or module dependency management?
>>>> 
>>>> -David
>>>> 
>>>> 
>>>> On Jul 12, 2011, at 12:09 PM, Eric Bowman wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> I've written a tool that we're considering open sourcing, and I'm curious 
>>>>> to gauge how much interest there would be in it.
>>>>> 
>>>>> The purpose of the tool is to generate proper poms for each of the ofbiz 
>>>>> modules by inspecting an ofbiz directory.  It works in two steps, and it 
>>>>> uses the Nexus search API (so it's not that interesting unless you have a 
>>>>> Nexus repository installed somewhere nearby).
>>>>> 
>>>>> Here's what it does:
>>>>> 
>>>>> 1. Inspects $OFBIZ_HOME recursively, identifying external dependency 
>>>>> libraries
>>>>> 2. Generates the SHA1 hash of each jar, and uses a Nexus API to determine 
>>>>> whether that jar already exists in Nexus as a known artifact.
>>>>> 3. If it does not, it takes a random sample of the classes in each jar, 
>>>>> and queries Nexus to see can it figure out a reasonable groupId & 
>>>>> artifactId.
>>>>> 4. For artifacts not already in Nexus, it synthesizes a mvn 
>>>>> deploy:deploy-file for each jar and each possible 
>>>>> groupId/artifactId/version it decides might be useful, and lets you 
>>>>> decide which commands to run to get all the dependency jars in Nexus.
>>>>> 5. After all the external dependencies are in Nexus, it looks through 
>>>>> $OFBIZ_HOME again, and determines all the transitive dependencies between 
>>>>> ofbiz modules
>>>>> 6. Next it synthesizes a pom for each module, that captures both the 
>>>>> dependencies in that module's lib directory, as well as the simplest 
>>>>> transitive graph of dependencies on other modules.
>>>>> 7. Finally it prints out mvn deploy:deploy-file commands which can be run 
>>>>> separately to put each ofbiz module's jar file into Nexus, along with its 
>>>>> pom.
>>>>> 
>>>>> If you are using maven, this is pretty nice -- this way you don't have to 
>>>>> worry about declaring dependencies against all the jars in the ofbiz 
>>>>> directory; it figures all that out, and leverages maven's transitive 
>>>>> dependency resolution to make a clean build.
>>>>> 
>>>>> Obviously it doesn't solve other problems, like how to deploy an ofbiz 
>>>>> server in a maveny way, but that may follow.
>>>>> 
>>>>> If you're interested in seeing this open sourced, perhaps you can reply 
>>>>> off-list; if there is enough interest I'll put this on github.  And maybe 
>>>>> even if there isn't. :)
>>>>> 
>>>>> Cheers,
>>>>> Eric Bowman
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to