Now with maven2 I am using the inherit / build function and I have to redefine my dependencies (minus version number) in each child project
No no. Dependencies declared in the parent pom are inherited.
Is there any way to tell maven that I want to share some of my addictions among all my children?
Just declare the <parent> element in the child POMs. For example, with this parent POM:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.group.id</groupId> <artifactId>parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <name>Demo - Parent</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <modules> <module>child</module> </modules> </project>
And this POM for the child module:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>my.group.id</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <name>Demo - Child</name> <artifactId>child</artifactId> <packaging>jar</packaging> </project>
The junit dependency is inherited as expected:
$ mvn dependency: tree
[INFO] Scanning for projects ...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ----------------------------------------------- -------------------------
[INFO] Building Demo - Child
[INFO] task-segment: [dependency: tree]
[INFO] ----------------------------------------------- -------------------------
[INFO] [dependency: tree {execution: default-cli}]
[INFO] my.group.id:child:jar:1.0-SNAPSHOT
[INFO] \ - junit: junit: jar: 3.8.1: test
[INFO] ----------------------------------------------- -------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ----------------------------------------------- -------------------------
...
I suspect you are declaring dependencies in the <dependencyManagement> section (which has a different purpose).
source share