This page contains advice to ensure smooth transition to maven 3 from maven 2 :
A set of maven-enforcer-plugin rule
- Check that plugin versions are defined
- TODO: Ensure that plugin defs appear only once
- TODO: More rules!
| Code Block |
|---|
<project> [...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>enforce-plugin-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requirePluginVersions>
<message>Best Practice is to always define plugin versions!</message>
<banLatest>true</banLatest>
<banRelease>true</banRelease>
<banSnapshots>true</banSnapshots>
<phases>clean,deploy,site</phases>
<additionalPlugins>
<additionalPlugin>org.apache.maven.plugins:maven-eclipse-plugin</additionalPlugin>
<additionalPlugin>org.apache.maven.plugins:maven-reactor-plugin</additionalPlugin>
</additionalPlugins>
</requirePluginVersions>
<unCheckedPluginsList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginsList>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
|
</project>
relative path to parent
If a project is referring to a parent pom, but that pom isn't reachable in the default parent path (../pom.xml). Then you should either :
- update it to the right path
- put <relativePath /> in the <parent> tag so that maven knows it will have to look for it directly in the local repository
Standard variables
For example, when one wants to refer to the artifactId of a POM, the variable ${project.artifactId} can be used.
There are a lot of other possibilities to do that, like ${pom.artifactId}, ${artifactId} and so on.
These ways are all deprecated and might be deleted in the future. With maven3, all these deprecated uses appear as warnings.
- Always use the ${project.xxx} form
- Thank JVZ for the page title: http://twitter.com/jvanzyl/status/4621533361
