Uploaded image for project: 'XalanJ2'
  1. XalanJ2
  2. XALANJ-2578

Maven build system for Xalan-J

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • The Latest Development Code
    • Xalan
    • Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
    • PatchAvailable

    Description

      I have developed Maven POM files to build Xalan-J with Maven instead of Ant that I'm willing to donate to the Apacha Xalan-J project.

      The additions attempt to be non-intrusive, leaving the existing
      ant build system untouched. For this reason, the POMs are not as lean
      as they could be (see below).

      I've run the minitest suite ('ant smoketest.gump'), and it all works
      fine on a fresh checkout.

      This patch is intended as a basis for discussion, as there are still a
      few questions open:

      • Will this replace the ant build? (preferably yes, we could make the
        POMs much leaner by moving sources into standard Maven directories;
        less maintenance)
      • What will be the target version number? (see below for details)
      • How do we integrate testing? (it's currently in a separate project,
        and that's a good thing - but running it from Maven would be nice)

      Overview
      ========

      There is a project parent POM, which groups the project into the
      following modules:

      • serializer (builds serializer.jar, from the
        org.apache.xml.serializer.* packages)
      • xalan-impl (builds an intermediate jar from the rest of the sources)
      • xalan (builds xalan.jar, using the maven shade plugin to integrate
        xalan-impl and dependent libraries into an uber-jar - this replicates
        the output of the ant build process)

      Output artifacts (xalan.jar and serializer.jar) are placed in the
      'build' directory, like in the ant build. The groupId and artifactId
      are the same as the ones in Maven Central for Xalan-J 2.7.1

      Details
      =======

      In the Maven build, dependent libraries (BCEL, java_cup, regexp) are
      pulled from Maven Central and differ slightly in version from what's
      checked into SVN in the lib-directory.
      The same goes for the tools directory; the Maven tooling uses
      artifacts from Maven central and ignores the tools directory
      altogether.

      Since the versioning scheme in the project differs from standard Maven
      versioning (2.7.D2 for a defelopment version of 2.7.2 vs its Maven
      equivalent 2.7.2-SNAPSHOT), I've left it with Maven standard for now.
      The current version in the POMs is set to 2.8-SNAPSHOT, as I'd expect
      a change like this to go into a minor release rather than a bugfix
      release.

      Because the versioning question is still open, the POMs leave
      Version.java in both serializer.jar and xalan.jar alone. Depending on
      what we decide to do with project versioning and whether or not we
      preserve the ant build (preferably no), the way the Version classes
      operate will need to change (either read the version from a generated
      property file, read it from META-INF or use Maven filtering).
      Currently, the ant build simple overwrites them and removes them on
      clean (even though they're checked in).

      Attachments

        Issue Links

          Activity

            People

              shathaway Steven J. Hathaway
              uwe_pachler Uwe
              Gary D. Gregory Gary D. Gregory
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - 36h
                  36h
                  Remaining:
                  Remaining Estimate - 36h
                  36h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified