maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carl Trieloff <>
Subject Maven and Fedora
Date Wed, 06 Dec 2006 16:38:48 GMT
I have spoken with a few committers over IRC, ApacheCon etc about this 
so here it comes. Some of us would like to include maven into Fedora 
distributions. There are two components to this, one technical and the 
other process similar to the Apache incubator process in that you need 
a sponsor, need to pass review etc...

A few of us have been working on working out all the issues to meet the 
Fedora and Linux distro guidelines. Thanks to Deepak he has worked out 
most of this and has created a set of patches for maven in addition to 
identifying the work that needs to be done each time an update needs to 
be included into Fedora. It would be ideal if we could create a maven 
target with each release that met these guidelines and work in a Linux 
distro build environment. Once we get through the technical, Deepak,  
and I can help drive the process with Fedora.

Please take a look, Deepak can JIRA all the patches and a few of us can
help with this.

Carl, Deepak

The following provided by Deepak

Since there is a strict "must build offline" requirement, the maven2 rpm
is designed to build completely disconnected from the Internet. To this
end, the rpm is self-contained -- it contains poms, necessary jars for
bootstrapping, etc.

Here is where all the maven2 sources are (explanation of source files is
at the end):

It is strongly recommended that whoever plans to help out with this,
reads the maven2-jpp-readme.html file, as it gives a brief idea as to
how the mapping system works. Changes from maven2-jpprepolayout.patch
(or their equivalent), and new files and
(or their equivalent) need to go upstream in order to make everything
work with jpackage smoothly.

In order to put maven2 into Fedora, here are the brief set of steps for
all dependencies, and maven itself:

1. Get rpm from jpackage. Check if it is set to build natively. 
   If not,
     Build it, run it through spec-gcj-convert (file attached), verify
     new spec, rebuild it, make sure it conforms to Fedora guidelines
     for everything except the release number and all, that should be
     jpackage specific. Then upload this to jpackage.
   If it is:
     Do nothing

2. Then, use the latest spec from jpackage after doing #1, update the
   release to match fc guidelines, merge changelog, build into Fedora.

A brief explanation what the files are for:
-> m2_jar_repo.tar.gz - An archive of certain jar files needed for
   building (some maven2 dependencies need maven2 to build -- so maven2
   has a bootstrap mode where pre-built jars are used. Once such a maven
   is built, it is then used to build all dependencies, and then maven
   is re-built in non-bootstrap mode against those dependencies)
-> m2_pom_repo.tar.gz - An archive of all the pom files needed for
-> maven2-addjdom-depmap.xml - Adds a jdom dependency to maven. jdom is
   used by the jpp mapping system
-> maven2-addjdomtobootstrappath.patch - Adds jdom to the bootstrap
   classpath (see above note)
-> maven2-buildallplugins.patch - Patch to enable plugins that maven
   disables by default (we always build as much as possible in our
-> maven2-disable-itests.patch - Patch to disable integration tests. The
   tests take a long time to run, so this patch is used to disable them
   (unless the --with itests switch is given)
-> maven2-empty-dep.jar/pom - Certain jars in maven repositories are
   monolithic and not needed when building against JPackage packages.
   e.g. velocity-dep, which contains all of velocity's dependencies.
   Since the jpp mapping system can only map one-to-one, we need to
   maven dependencies such as velocity-dep to something... that
   something is this empty-dep which contains no classes.
-> maven2-enable-unbuilt-modules.patch - As with plugins, we also try to
   build as many modules as possible. This patch enables it such
-> maven2-it-jppfixes.patch - This patch was originally needed with the
   old rpm. In theory, only the first chunk of patch should be needed
   (to enable the -s switch), but I am not certain -- it needs to be
-> -> The "JPackage layout". In the
   Jpackage layout, a file location is $groupId/$artifactId.jar with any
   "."'s in the groupId converted to "/"'s first. *This file, or an
   equivalent needs to go upstream*
-> maven2-jpp-readme.html - A readme for how packages should be built
   around this maven.
-> maven2-jpprepolayout.patch - The most critical component of all. This
   patch wires in usage of the jpackage repository. Additionally, it
   also ensures that maven will not go online -- not for dependencies,
   not for checking plugin updates, not for anything. It also adds the  
   jpackage repository (/usr/share/maven2/repository) to the default
   list. *The changes in here are the ones that need to go upstream*
-> maven2-jpp-script - The init script for jpackage building. It is a
   wrapper around the mvn script -- it calls mvn with certain properties
   that causes maven to behave in an offline manner,
   use /usr/share/maven2/repository, etc.
-> - A helper package that loads the
   dependency map, provides the value based on key requested, etc. *This
   file, or an equivalent needs to go upstream*
-> maven2-maven-site-plugin.tar.gz - The maven-site-plugin. The version
   in the plugins tarball cannot build against the new doxia.
-> maven2-model-v3.tar.gz - The model v3 class
-> maven2-plugins-060420-src.tar.gz - The plugins tarball. See .spec to
   see how it was generated
-> maven2-plugins-plexus151.patch - Disabled a code stub that causes
   build to fail against plexus-utils 1.5.1+
-> - Script to run integration tests
-> maven2-script - The mvn wrapper script
-> maven2-settings.xml - I don't think this is used anymore..
-> maven2-src.tar.gz - The maven2-2.0.4 source tarball from svn.


View raw message