We implemented Maven last year in our Organization, overall we are satisfied 
with the tool however, as we migrate more and more applications 
to Maven we are facing some daunting challenges. We have roughly 500 maven 
projects for 150 odd applications (ears), using the concept of 
Super POMS and Dependency Management to create a layer of abstraction for 
commonly used artifacts, plugins and properties 

However, despite of this abstraction most of our artifacts have fairly deep 
dependency graphs. And since we have component base Application 
Architecture the impact of a change in common, low level component which is not 
managed from Super Pom is huge. A change in the low level 
pom means we have to change entire pom hierarchies. In some cases it means 
changing upto 400 pom files. This issue has now become so 
contentious that we have created a Project to re-structure and re-architect 
Maven.  

As far as our Release Cycle goes, we release in test environment from which we 
go through the bug fixing cycle, once all the bugs are fixed 
then the artifacts are pushed into pre-prod and prod. Now because the artifact 
is released into Test envt, any code change for bug fixes will force 
a pom version change. This will trigger a change in the entire project 
hierarchy from core-->ejb-->war-->ear. As a result our release cycles have 
become really slow. We are looking at options to reduce a) the impact of change 
in the low level artifact and b) ability to release quickly.  

We looked at version ranges as an options but it would only partly solved the 
problem, as we still get pinned versions into manifest files. Other 
alternative was to release snapshots into Test Environment. Only pitfall with 
this option is that once the bug fixing cycle is over we'll have to 
release and build again. This, at present is against our company policy but 
personally I don't see any fuss with it. 

I was wondering if anyone has any recommendations for, 

1. What is the recommended Maven Repository Architecture for Organizations with 
Application Architecture such as ours
2. Is there a 'best practice' for Releasing Maven Enterprise projects. (from 
dev-->test-->pre-prod-->prod)
3. Is there a Dependency Graph type of tool (not like site - dependencies 
report) which can display 'what depends on me' for each and every 
artifact in the hierarchy?  

We use WebSphere on Linux and most of our projects have 
ear-->wars-->ejbs-->cores type of structure. We also have whole heap of 
business 
services deployed as ear-->ejb-->core, which gets used by other application.
_________________________________________________________________
It's simple! Sell your car for just $30 at CarPoint.com.au
http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fsecure%2Dau%2Eimrworldwide%2Ecom%2Fcgi%2Dbin%2Fa%2Fci%5F450304%2Fet%5F2%2Fcg%5F801459%2Fpi%5F1004813%2Fai%5F859641&_t=762955845&_r=tig_OCT07&_m=EXT

Reply via email to