From Fedora Project Wiki

Maven Update

This page hosts information about the next major Maven update (Maven 2.2.1 and Maven 3) in Fedora. If you wish to help out with it, please feel free to contact Deepak or Alexander for pointers.

Maven 2.2.1

The spec file for 2.2.1 will be written from scratch, as the current 2.0.x spec file has gotten convoluted over time, and is no longer maintainable. Another major change for the maven 2.2.1 set will be that plugins will not longer come from the maven2 srpm. Instead, each plugin will have its own rpm.

NOTE: To avoid breaking rawhide, we have a specified target for this task, the build instruction is "make build TARGET=dist-f14-maven221", and scratch build instruction is "koji build --scratch dist-f14-maven221 <src.rpm>".

NOTE: Non core plugins (i.e. not needed to build maven itself) are not listed here but on a different page. See the list here.

Progress

Because maven updates (especially this one) are such a major undertaking, issues need to be tackled in stages. The current plan is as follows:

Item Owner Status
Build bootstrap rpm with a single version (wherever possible) of each dependency Deepak Bhole Done
      Write script that can run through ~/.m2/ to gather the latest version, and link the rest to simulate a repo Deepak Bhole Done
      Write skeleton spec file that uses the above simulated repo to build maven (only %prep and %build) Deepak Bhole Done
      Prepare preliminary list of packages needed, what is in rawhide, and what subsequent steps are needed Deepak Bhole Done
Update patches for depmap/jpp repo support Deepak Bhole Done
      Port existing patches Deepak Bhole Done
      Update patchset for 2.2.1 Deepak Bhole Done
Update rpm spec file to make bootstrap version installable and usable for builds Deepak Bhole Done
Post usable bootstrap rpm publicly Deepak Bhole Done [1]
From the simulated repo, remove jars for which packages exist in rawhide (at >= required version), and try to build with those packages installed Deepak Bhole Done
Finalize list of work that needs to be done in terms of package updates and new packages Deepak Bhole Done
Build bootstrap version in rawhide Deepak Bhole Done
      Build the bootstrap maven in rawhide tag in koji, (in separate tag if needed) Distributed Done
Create/Build all the dependencies (updates and new packages) Distributed Done
Finally, build maven in non-bootstrap mode Deepak Bhole Done

Dependency Info

Preliminary build has yielded some data about updates/new packages. This list should not be considered 100% accurate yet as some items that are being considered "OK" due to higher version, might cause errors. And vice-versa, items with lower versions may work perfectly fine.

Items with a strikethrough were needed with upstream build, but are no longer needed.

Jars pulled Package Required Version Version in Rawhide Status (For now)

asm:asm:3.1
asm:asm-commons:3.1
asm:asm-tree:3.1
asm:asm-util:3.1

objectweb-asm 3.1 3.1 OK
backport-util-concurrent:backport-util-concurrent:3.1 backport-util-concurrent 3.1 3.1 OK
bsh:bsh:1.3.0 bsh 1.3.0 1.3.0 OK
classworlds:classworlds:1.1 classworlds 1.1 1.1 OK
com:jcraft:jsch:0.1.38 jsch 0.1.38 0.1.41 OK
commons-cli:commons-cli:1.2 jakarta-commons-cli 1.2 1.1 OK
commons-codec:commons-codec:1.2 jakarta-commons-codec 1.2 1.4 OK
commons-collections:commons-collections:3.2 jakarta-commons-collections 3.2 3.2.1 OK
commons-httpclient:commons-httpclient:3.1 jakarta-commons-httpclient 3.1 3.1 OK
commons-io:commons-io:1.4 jakarta-commons-io 1.4 1.4 OK
commons-lang:commons-lang:2.3 jakarta-commons-lang 2.3 2.3 OK
commons-logging:commons-logging:1.0.4 jakarta-commons-logging 1.0.4 1.0.4 OK
easymock:easymock:1.2_Java1.3 easymock 1.2 1.2 OK
edu/umd/cs/mtc:multithreadedtc-jdk14:1.01 multithreadedtc 1.01 1.01 OK
jdom:jdom:1.0 jdom 1.0 1.0 OK
junit:junit:3.8.1 junit 3.8.1 3.8.2 OK

nekohtml:nekohtml:1.9.6.2
nekohtml:xercesMinimal:1.9.6.2

nekohtml 1.9.6.2 0.9.5 OK
net/sf/retrotranslator:retrotranslator-runtime:1.2.7 retrotranslator 1.2.7 None New package? yyang (we should not need this one if multitreadedtc is build without it)

org/apache:ant:ant:1.7.1
org/apache:ant:ant-launcher:1.7.1

ant 1.7.1 1.7.1 OK
org/apache:apache-jar-resource-bundle:1.4 apache-resource-bundles 1.4 1.4 OK

org/apache:jackrabbit:jackrabbit-jcr-commons:1.5.0
org/apache:jackrabbit:jackrabbit-webdav:1.5.0

jackrabbit 1.5.0 None New package? (In-Progress:yyang)
javax/jcr:jcr:1.0 jcr 1.0 None New package? (In-Progress:yyang)
org/apache/poi:poi:3.2-FINAL jakarta-poi 3.2 None New package? (In-Progress:yyang)
org/apache/maven:apache-maven:2.2.1 maven2 2.2.1 2.0.8 Needs update

org/apache/maven/doxia:doxia-core:1.0
org/apache/maven/doxia:doxia-decoration-model:1.0
org/apache/maven/doxia:doxia-logging-api:1.1
org/apache/maven/doxia:doxia-module-apt:1.0
org/apache/maven/doxia:doxia-module-fml:1.0
org/apache/maven/doxia:doxia-module-xdoc:1.0
org/apache/maven/doxia:doxia-module-xhtml:1.0
org/apache/maven/doxia:doxia-sink-api:1.1
org/apache/maven/doxia:doxia-site-renderer:1.0

maven-doxia 1.1 1.1.2 OK

org/apache/maven:enforcer:enforcer-api:1.0-beta-1
org/apache/maven:enforcer:enforcer-rules:1.0-beta-1
org/apache/maven/plugins:maven-enforcer-plugin:1.0-beta-1

maven-enforcer 1.0-beta-1 1.0-beta-2 OK

org/mortbay:jetty:jetty:6.1.5
org/mortbay:jetty:jetty-util:6.1.5
org/mortbay:jetty:servlet-api-2.5:6.1.5

jetty 6.1.5 6.1.21 OK
org/apache/maven:maven-archiver:2.4 maven-archiver 2.4 2.4 OK

org/apache/maven:maven-artifact:2.2.1
org/apache/maven:maven-artifact-manager:2.2.1
org/apache/maven:maven-artifact-test:2.2.1
org/apache/maven:maven-compat:2.2.1
org/apache/maven:maven-core:2.2.1
org/apache/maven:maven-error-diagnostics:2.2.1
org/apache/maven:maven-model:2.2.1
org/apache/maven:maven-monitor:2.2.1
org/apache/maven:maven-plugin-api:2.2.1
org/apache/maven:maven-plugin-descriptor:2.2.1
org/apache/maven:maven-plugin-parameter-documenter:2.2.1
org/apache/maven:maven-plugin-registry:2.2.1
org/apache/maven:maven-profile:2.2.1
org/apache/maven:maven-project:2.2.1
org/apache/maven:maven-repository-metadata:2.2.1
org/apache/maven:maven-script-ant:2.2.1
org/apache/maven:maven-script-beanshell:2.2.1
org/apache/maven:maven-settings:2.2.1
org/apache/maven:maven-toolchain:2.2.1

maven2 2.2.1 2.0.8 Needs update
org/apache/maven/plugins:maven-assembly-plugin:2.2-beta-4 maven-assembly-plugin 2.2-beta-4 2.2-beta-4 OK
org/apache/maven/plugins:maven-clean-plugin:2.1.1 maven-clean-plugin 2.1.1 2.4.1 OK
org/apache/maven/plugins:maven-compiler-plugin:2.0.2 maven-compiler-plugin 2.0.2 2.0.2 OK
org/apache/maven/plugins:maven-install-plugin:2.1 maven-install-plugin 2.3 2.3 OK
org/apache/maven/plugins:maven-jar-plugin:2.1 maven-jar-plugin 2.1 2.3 OK
org/apache/maven/plugins:maven-pmd-plugin:2.4 maven-pmd-plugin 2.4 2.5 OK
org/apache/maven/plugins:maven-remote-resources-plugin:1.0-beta-2 maven-remote-resources-plugin 1.1 None OK
org/apache/maven/plugins:maven-release-plugin:2.0 maven-release 2.0 2.0 OK
org/apache/maven/plugins:maven-resources-plugin:2.2 maven-resources-plugin 2.2 2.2 OK
org/apache/maven/plugins:maven-shade-plugin:1.2 maven-shade-plugin 1.2 1.2.2 OK
org/apache/maven/plugins:maven-site-plugin:2.1 maven-site-plugin 2.1 2.1 OK
org/apache/maven/plugins:maven-surefire-plugin:2.3 maven-surefire-plugin 2.3 2.3 OK
org/apache/maven:reporting:maven-reporting-api:2.2.1 maven-shared 2.2.1 2.0.8 OK

org/apache/maven/scm:maven-scm-api:1.0-beta-3
org/apache/maven/scm:maven-scm-manager-plexus:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-clearcase:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-cvs-commons:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-cvsexe:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-perforce:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-starteam:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-svn-commons:1.0-beta-3
org/apache/maven/scm:maven-scm-provider-svnexe:1.0-beta-3

maven-scm 1.0-beta-3 1.2 OK

org/apache/maven/shared:file-management:1.1
org/apache/maven/shared:maven-common-artifact-filters:1.1
org/apache/maven/shared:maven-dependency-tree:1.1
org/apache/maven/shared:maven-downloader:1.1
org/apache/maven/shared:maven-repository-builder:1.0-alpha-2
org/apache/maven/shared:maven-shared-io:1.1

maven-shared 8 14 OK

org/apache/maven:surefire:surefire-api:2.3
org/apache/maven:surefire:surefire-booter:2.3

maven-surefire 2.3 2.3 OK

org/apache/maven:surefire:surefire-junit:2.3

maven-surefire-provider-junit 2.3 2.3 OK

org/apache/maven:wagon:wagon-file:1.0-beta-6
org/apache/maven:wagon:wagon-http:1.0-beta-6
org/apache/maven:wagon:wagon-http-lightweight:1.0-beta-6
org/apache/maven:wagon:wagon-http-shared:1.0-beta-6
org/apache/maven:wagon:wagon-provider-api:1.0-beta-6
org/apache/maven:wagon:wagon-ssh:1.0-beta-6
org/apache/maven:wagon:wagon-ssh-common:1.0-beta-6
org/apache/maven:wagon:wagon-ssh-external:1.0-beta-6
org/apache/maven:wagon:wagon-webdav-jackrabbit:1.0-beta-6

maven-wagon 1.0-beta-6 1.0-beta-2 OK
org/beanshell:bsh:2.0b4 bsh2 2.0b4 None New package

org/codehaus/modello:modello-core:1.0.1
org/codehaus/modello:modello-maven-plugin:1.0.1
org/codehaus/modello:modello-plugin-converters:1.0.1
org/codehaus/modello:modello-plugin-dom4j:1.0.1
org/codehaus/modello:modello-plugin-java:1.0.1
org/codehaus/modello:modello-plugin-jdom:1.0.1
org/codehaus/modello:modello-plugin-stax:1.0.1
org/codehaus/modello:modello-plugin-xdoc:1.0.1
org/codehaus/modello:modello-plugin-xml:1.0.1
org/codehaus/modello:modello-plugin-xpp3:1.0.1
org/codehaus/modello:modello-plugin-xsd:1.0.1

modello 1.0.1 1.0-alpha-15 OK
org/codehaus/mojo:buildnumber-maven-plugin:1.0-beta-4 buildnumber-maven-plugin 1.0-beta-4 None OK
org/codehaus/plexus:plexus-active-collections:1.0-beta-2 plexus-active-collections 1.0-beta-2 None OK
org/codehaus/plexus:plexus-ant-factory:1.0-alpha-2.1 plexus-ant-factory 1.0-alpha-2.1 1.0-alpha-2.1 OK
org/codehaus/plexus:plexus-archiver:1.0-alpha-12 plexus-archiver 1.0-alpha-12 1.0-alpha-12 OK
org/codehaus/plexus:plexus-bsh-factory:1.0-alpha-7 plexus-bsh-factory 1.0-alpha-7 1.0-alpha-7 OK
org/codehaus/plexus:plexus-classworlds:1.2-alpha-9 plexus-classworlds 1.2-alpha-9 1.2-alpha-9 OK

org/codehaus/plexus:plexus-compiler-api:1.5.3
org/codehaus/plexus:plexus-compiler-javac:1.5.3
org/codehaus/plexus:plexus-compiler-manager:1.5.3

plexus-compiler 1.5.3 1.5.2 OK
org/codehaus/plexus:plexus-component-api:1.0-alpha-15 plexus-components 1.0-alpha-15 None OK
org/codehaus/plexus:plexus-container-default:1.0-alpha-30 plexus-containers-container-default 1.0-alpha-30 1.0-alpha-34 OK
org/codehaus/plexus:plexus-container-default:1.0-alpha-9-stable-1 plexus-container-default 1.0-alpha-9-stable-1 1.0-alpha-8 OK
org/codehaus/plexus:plexus-i18n:1.0-beta-7 plexus-i18n 1.0-beta-7 1,0-beta-10 OK
org/codehaus/plexus:plexus-interactivity-api:1.0-alpha-6 plexus-interactivity 1.0-alpha-6 1.0-alpha-5 OK
org/codehaus/plexus:plexus-interpolation:1.11 plexus-interpolation 1.11 1.13 OK
org/codehaus/plexus:plexus-io:1.0-alpha-4 plexus-io 1.0-alpha-4 1.0-alpha-5 OK
org/codehaus/plexus:plexus-resources:1.0-alpha-4 plexus-resources 1.0-alpha-4 1.0-alpha-4 OK
org/codehaus/plexus:plexus-utils:1.5.12 plexus-utils 1.5.12 2.0.5 OK
org/codehaus/plexus:plexus-velocity:1.1.7 plexus-velocity 1.1.7 1.1.7 OK
org/sonatype/plexus:plexus-build-api:0.0.6 plexus-build-api 0.0.6 0.0.6 OK
org/sonatype/plexus:plexus-cipher:1.5 plexus-cipher 1.5 1.5 OK
org/sonatype/plexus:plexus-sec-dispatcher:1.3 plexus-sec-dispatcher 1.4 1.4 OK
org/sonatype/forge:forge-parent:5 forge-parent 5 None OK
org/sonatype/spice:spice-parent:15 spice-parent 15 None OK
oro:oro:2.0.8 jakarta-oro 2.0.8 2.0.8 OK
regexp:regexp:1.3 regexp 1.3 1.5 OK

org/slf4j:jcl-over-slf4j:1.5.6
org/slf4j:slf4j-api:1.5.6
org/slf4j:slf4j-jdk14:1.5.6
org/slf4j:slf4j-nop:1.5.3

slf4j 1.5.6 1.5.6 OK

org/apache/velocity:velocity:1.5
velocity:velocity:1.5
velocity:velocity-dep:1.5

velocity 1.5 1.5 OK

Maven 3

Maven 3 is in preview phase and some packages will require it to build properly. Work has been under way to package maven3 as soon as possible. There are certain changes to maven architecture that should make our work easier (plugin architecture for custom repositories should allow for JPP mode patch to disappear and be replaced by maven plugin).

Dependencies

Maven 3 needs maven 2.2.0 to build (we already have that in rawhide). Other dependencies:

* xbean (review DONE)
* plexus-component-metadata (updated as part of plexus-containers -> plexus-containers-component-metadata DONE)
* modello >= 1.4 (DONE)
* animal-sniffer-maven-plugin
* (no version checking has been done yet...maybe some other packages will need to be updated)

Ideas/Improvements

  1. Every package installing maven poms/depmaps should have "Provides: groupId:artifactId". Maven could then be updated with another resolver that would ask packagekit for given groupId:artifactId when resolving dependencies during compile/install phase. This should work similar to how bash currently suggest installing package if it fails to find command.