Jetzt mit Maven2 benutze ich die Vererbungs-/Zusammensetzungsfunktion und muss meine Abhängigkeiten (abzüglich der Versionsnummer) in jedem Kindprojekt neu deklarieren
Nein, das müssen Sie nicht. Die im übergeordneten Pom deklarierten Abhängigkeiten werden vererbt.
Gibt es eine Möglichkeit, Maven mitzuteilen, dass ich einige meiner Abhängigkeiten für alle meine Kinder freigeben möchte?
Erklären Sie einfach die <parent>
Element in untergeordneten POMs. Zum Beispiel mit diesem übergeordneten 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>
Und dieses POM für das Kindermodul:
<?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>
Die Junit-Abhängigkeit wird wie erwartet vererbt:
$ 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\] ------------------------------------------------------------------------
...
Ich vermute, dass Sie die Abhängigkeiten in el <dependencyManagement>
Abschnitt (was einen anderen Zweck hat).