This page details some of the backwards compatibility issues that you might encounter upgrading between Maven versions, and how to update your project. You'll find here:
The JDK required to run Maven is now 1.4 or above. This does not affect what JDKs you can build your libraries for, however - you can still generate class files that will run on 1.1 JVMs as before.
While in most cases this change should be transparent, those using optional tasks will need to add them as a dependency to their plugin/project, as not all optional tasks are bundled with Maven any more.
The following plugins are no longer distributed with Maven by default. They are still available using
the plugin:download
command to obtain the last version released, and the source
code is available from the plugin sandbox. If there is sufficient interest in maintaining them or moving
them to another project it will be considered.
default
attribute in maven.xml has been deprecated
The default goal should be specified in a <defaultGoal>
tag inside the
<build>
section of project.xml instead of maven.xml.
lib
directoryThe following libraries are no longer distributed with Maven:
commons-digester
commons-graph
commons-lang
which
If a plugin did not declare a dependency but relied on its existence, it may fail to work under Maven 1.1.
In addition, the versions of some libraries have changed, which may affect plugins.
maven.jar
If you are directly importing and using classes from this package, you may find classes
from the org.apache.maven.project
package are missing as they have moved.
This may also apply if you are using maven-jelly-tags
.
Fix: Include maven-model-3.0.1
in your project's dependencies.
org.apache.maven.project.Repository
(and use of pom.repository.*
in Jelly)
The Repository
class now houses only the information from the project model.
You may find that static methods such as splitSCMConnection
and tokenizerToArray
or fields such as scmType
, which depended on the split function, are missing.
Fix:The static methods have been removed from the core
but they exist in the RepositoryUtils
class in maven-changelog-plugin
if needed.
All other plugins had been manually splitting the connection string.
See maven-scm-plugin
for an example of this.
The future should see all plugins and code using Maven SCM for this task, and all dealings with an
SCM system.
Project.getDependencyPath
and Project.getDependency
If you have a single non-JAR artifact that you resolve using this function, it will no longer be found.
Fix: Specify the type in the argument. The full form is
getDependency('groupId:artifactId:type')
. Type is defaulted to jar
.
As in maven 1.0, xercesImpl,xml-apis and xml-resolver are loaded in the endorsed libraries of the JVM. You can't override them and if you use another version of xml-apis in your tests, you have to fork the JVM.
If in a custom goal or in a plugin, you use some xslt transformations, we recommend that you not use the style task in ant which will not work with all JDKs. Instead, you are encouraged to use a custom process launched in a forked JVM (like it's done in the PDF plugin for example).
project.xml
files that used to work in older versions of Maven may now present parse
errors. The parser in Maven 1.1 is much less tolerant of invalid project.xml
files
to avoid silently masking syntax errors.
Fix: Check your project file against the XSD published for the model version you are using.
create-upload-bundle
goal.
Replaced by artifact:create-upload-bundle
.
The default repository is now http://repo1.maven.org/maven/ (instead of http://www.ibiblio.org/maven/).
Each plugin has its independent release cycle. With respect to Maven 1.0.2, practically every bundled plugin has seen a major version upgrade. The following is a (certainly incomplete!) list of the most prominent, known issues: