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

Mixin POM fragments

    XMLWordPrintableJSON

Details

    Description

      I am looking for a way to mixin POM fragments into POMs. Note that this idea is beyond parent pom inheritance because all projects inherit from a corporate parent pom. The problem that I am running into is that the corporate parent pom is turning into an "everything but the kitchen sink" POM and I'd like to dissect it into POM fragments relevant for individual modules.

      For example, I would like to have mixins for:

      • Java projects (that include static code analysis plugins, javadoc, etc.)
      • JPA projects (that include DDL generation)
      • Flex projects (that include flexmojos, asdoc, etc.)
      • Scala projects (that include the maven-scala-compiler plugin, scaladoc, etc.)
      • JavaScript projects (that include build plugins like maven-yuicompressor-plugin with jslint and compress goals)

      Hopefully, you get the idea. Without the ability to factor pom logic, we are left with two symptoms:

      1. copy/paste duplication
      2. complex "it does it all" parent poms (which slow down builds because more plugins are loaded even though they might not do anything material)

      Note that a project may include multiple mixins as I could have a project that contains Java code, Scala code, and JavaScript.

      Another idea is that the mixins could be parameterized, so that the ultimate pom can be customized based on the parameters (like tokens).

      I recall reading about Mixins coming in Maven 3.1, but could not find any such issue to watch, so am creating one.

      Attachments

        1. daddy3.zip
          5 kB
          Tony Lampada
        2. maven-tiles.zip
          47 kB
          maoo

        Issue Links

          Activity

            People

              Unassigned Unassigned
              awhitford Anthony Whitford
              Votes:
              83 Vote for this issue
              Watchers:
              83 Start watching this issue

              Dates

                Created:
                Updated: