4 Stimmen

Maven2 teilt Abhängigkeiten zwischen Eltern und Kindern (ohne erneute Deklaration von Abhängigkeiten in Kindern)

Mit maven1 habe ich die erweitern. Tag, um meinem Kindprojekt mitzuteilen, dass es seine übergeordnete Konfiguration verwenden soll.

Alle Abhängigkeiten, die im übergeordneten Projekt deklariert wurden, waren auch in den erweiterten (untergeordneten) Projekten verfügbar.

Jetzt mit maven2 benutze ich die Vererbungs-/Zusammensetzungsfunktion und ich muss meine Abhängigkeiten (abzüglich der Versionsnummer) in jedem Kindprojekt neu deklarieren. (siehe how-to-share-common-properties-among-several-maven-projects )

Gibt es eine Möglichkeit, Maven mitzuteilen, dass ich einige meiner Abhängigkeiten für alle meine Kinder freigeben möchte?

14voto

Pascal Thivent Punkte 548176

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).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X