Maven assumes that the parent POM is available from the local repository, or available in the parent directory (../pom.xml
) of the current project. If neither location is valid this default behavior may be overridden via the relativePath
element. For example, some organizations prefer a flat project structure where a parent project's pom.xml
isn't in the parent directory of a child project. It might be in a sibling directory to the project. If your child project were in a directory ./project-a
and the parent project were in a directory named ./a-parent
, you could specify the relative location of parent-a
's POM with the following configuration:
<project>
<parent>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>a-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../a-parent/pom.xml</relativePath>
</parent>
<artifactId>project-a</artifactId>
</project>
To install the parent pom into repository, set package type to be “POM” and run “mvn install”
<project>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
...
Another way (multi-module) to have all the dependencies from the pom above is that you can now add this project as a dependency and all of its dependencies will be added to your project. When you declare a dependency on this persistence-deps project, don't forget to specify the dependency type as pom.
<project>
<description>This is a project requiring JDBC</description>
...
<dependencies>
...
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
</dependencies>
</project>
It is useful when your project already have one parent (only one parent is allowed). Sometimes it makes more sense to group similar dependencies together and reference a
pom
dependency. This way, your project can reference as many of these consolidated dependency POMs as it needs.
No comments:
Post a Comment