Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-3447

Enterprise Repository Architecture and Release Process

    XMLWordPrintableJSON

Details

    • Wish
    • Status: Closed
    • Minor
    • Resolution: Incomplete
    • None
    • None
    • None

    Description

      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 we still have fairly deep dependency graph. 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.

      Attachments

        Activity

          People

            wsmoak Wendy Smoak
            kamdars sachin kamdar
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: