Hi Carlo and Malintha,
I am CCing java-devel so that this information can be easily pointed to
in future, if needed.
Mikolaj has asked to be co-mentor on this one. He is the author of
which is a similar tool.
Before we move on, we need to establish the scope of fmvn vs xmvn. If
there is no differentiation then there is no need to work on fmvn. :-)
For one I still see the main goal for xmvn to be 'simplifying packaging
on Fedora' vs fmvn's 'build from a sanctioned repository'.
I think that there are many similarities. But first let me introduce XMvn.
XMvn is a project with similar, but wider scope than Maven FOSS
Repository Extension (FRE). You can see its Maven-generated website
, git repository  and github mirror .
I have never used FRE before, but I looked briefly at the code. From
what I suppose XMvn can do all that FRE can. A short comparison
FRE seems to have a very precise goal: resolve all dependencies from
local repository. XMvn goes beyond that. Besides doing what FRE does
* allows to blacklist some artifacts (whenever they are used as
dependency or plugin they are removed from POM during validation);
this is especially useful for plugins (for eg. you don't want to use
bugreport plugin to build Fedora packages, so it's best to ban it)
* provides MOJO to create JPP-style repository from artifacts in
reactor (it creates layout that follows Fedora packaging guidelines,
creating JPP depmap files and so on)
* provides information for building RPMs (like outputing list of files
so they can be used in RPM %files section, or list of direct
dependency artifacts that can be used to generate BuildRequires)
* enforce other rules when building projects (for example force
minimal Java source format; older formats are not supported with
* provides other useful tools (xmvn-resolve, xmvn-bisect)
Both FRE and XMvn are pure-Java implementations. They both provide
Plexus components that override default Maven components and this way
can redefine standard Maven behaviour. To ease maintenance XMvn tries
to redefine as few Plexus components as possible and delegate real
work to default Maven components.
FRE is configured by defining environmental variables and system
properties. Configuration of XMvn 0.4.0 and later is specified in XML
Both XMvn and FRE are system-independent. They can be successfully
used on non-Fedora systems. (For example I use XMvn on Debian.)
XMvn is licensed under ASL 2.0 license, which is exactly the same as
upstream Maven. FRE is licensed under BSD license. Although both
licenses are good, in my opinion it's better to keep the same
licensing as Maven itself (i.e. ASL 2.0).
XMvn uses maven coding guidelines, FRE uses different style. In my
opinion Maven coding style should be followed when developing
extensions for Maven.
XMvn is already packaged for Fedora (currently F-19+, but could be
easily added to F-17 and later). It is behind the implementation of
mvn-rpmbuild and mvn-local scripts as well as %mvn_build macro. All
Maven packages in Fedora 19 and later are built with XMvn.
I think that FRE and XMvn have a lot of similarities. Instead of
developing and maintaining separate projects we should combine our
efforts. I am open for discussion, suggestions, RFEs and
Because XMvn has more generic approach and it's already packaged and
used in Fedora, I think that any future development should rather
focus on XMvn.
Please let me know what you think and correct me if I'm wrong somewhere
about FRE. I have never used it before so thanks for understanding.