From Fedora Project Wiki
Set a Page Watch
Make sure you click watch on your new page so that you are notified of changes to it by others, including the Feature Wrangler
All sections of this template are required for review by FESCo. If any sections are empty it will not be reviewed


Maven 3

Summary

Maven is Java project management, project comprehension and build system tool. It recently reached new major release. Fedora should include Maven 3 since upstream project are already beginning to use its features to build packages.

Owner

  • Email: sochotnicky@redhat.com

Current status

  • Targeted release: Fedora 15
  • Last updated: 11th February 2011
  • Percentage of completion: 100%


Detailed Description

Maven is Java project management, project comprehension and build system tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

It recently reached new major release that has been re-worked architecturally. New version should offer developers more features, performance improvements and also easier API re-use in other tools.

Upstream developers have working backward compatibility layer with Maven 2.2.1 in place. This means that ideally maven2 package would be obsoleted by new version. This does not have to happen immediately, see Contingency plan.

Benefit to Fedora

Fedora includes a lot of Java packages, among them:

* Eclipse
* Tomcat
* Azureus
* Freemind

And a lot of their dependencies are using Maven as a build system. Some packages are slowly starting to use Maven 3 features. Unless Fedora includes Maven 3 in repositories, it will be much harder to update these packages to latest version which will prevent Fedora's mission "to lead the advancement of free and open source software and content as a collaborative community".

Scope

Dependencies of Maven 3 are already in Fedora, maven package is up for review [1].

What needs to be finished is custom resolver of packages from %{_javadir} directory instead of using upstream repositories with binary packages.

Work on custom resolver happens in ssh://fedorapeople.org/~sochotni/public_git/maven-javadir-resolver.git repository on Fedorapeople for now. Due to architectural changes in Maven 3 this resolver is different from one used in Maven 2 and will need more testing. It is already possible to compile several packages with it.

Other work that needs to happen:

  • Maven 3 will be a bit more sensitive to wrong pom filenames. See bugs filed

How To Test

Building various Java packages with Maven 3 with "custom resolver". Rebuild of all Fedora packages currently using maven2 can be considered as the ultimate test.

User Experience

Commands mvn and mvn-jpp will be superseded by mvn3 and (possibly) mvn3-jpp. When maven2 package is obsoleted, compatibility symlinks can be created. No user experience change apart from cleaner output from mvn commands (upstream change).

Dependencies

A lot of java packages are being built by previous (current in Fedora) version. Not all of them have to be buildable with Maven 3 for this feature to be considered complete since current version of maven can be kept around (and is installable in parallel).

Contingency Plan

None necessary. Maven 3 is installable in parallel with maven2. We can slowly move to use maven 3 to build our packages until we feel comfortable with obsoleting maven2.

Documentation

Release Notes

Maven 3.0 should offer better stability and performance compared to previous versions, but the biggest changes shouldn't be noticed by users. Most work has been happening under the hood to simplify writing Maven plugins and further improve performance by building projects in parallel. Users of Maven are encouraged to read Maven 3 release notes.

Fedora still provides maven2 package to support backward compatibility where needed.

Comments and Discussion