Features/Maven3

= 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

 * Name: Stanislav Ochotnický


 * 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.

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

 * Upstream release notes

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

 * See Talk:Features/Maven3