Maven Abhängigkeiten

Siassei

Bekanntes Mitglied
Servus,

ich beschäftige mich gerade mit dem Abhängigkeiten in Maven. Aufgrund mangelnder Erfahrung :) habe ich da so meine Probleme.
Wo definert man bei einer tieferen Projektstruktur den die allgemeine Abhängigkeiten für die Standardaufgeben wie z.B. Logging?
- in der obersten Ebene (erste POM)
- direkt vor Ort (wohl die schlechteste Lsg.)
- in einer externen pom.xml, die von den einzelnen Projekt importiert wird

Ich stelle mir die Frage, da z.B. nicht alle (etwa 90%) nutzen Log4J und beim Rest währe die Abhängigkeit überdefiniert.
Zudem gibt es da dass Problem mit Scala. Nicht in jedem Projekt kommen Scala-Files vor. Kann man die Einstellungen auslagern und bei den einzelnen Projekten importieren (ich spiele hier auf die build-Sektion der pom.xml an)?
Kann man die build-Sektion einer pom.xml auslagern und wenn benötigt importieren?

Gruß,
Thomas
 

Sergeant_Pepper

Bekanntes Mitglied
Hi,

die Stichworte "Multi-Modul-Projekt", "Parent POM" und "Dependency Management" helfen dir weiter.

Hier sind Auszüge aus einem Multi-Modul-Projekt von mir, wo genau das erreicht wird was du willst (wenn ich dich richtig verstanden habe ;-) )

Auszug aus einem parent pom:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project .... >
    <modelVersion>4.0.0</modelVersion>
    <groupId>de.forum</groupId>
    <artifactId>bigProject</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>bigProject</name>
    <url>http://maven.apache.org</url>
    <modules>
        <module>modulA</module>
        <module>modulB</module>
    </modules>

weitere Einträge...

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.15</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.4</version>
                <scope>test</scope>
            </dependency>
    </dependencyManagement>

weitere Einträge...

</project>

komplettes POM für modulA ("Kind-POM")
Code:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>bigProject</artifactId>
    <groupId>de.forum</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>de.forum</groupId>
  <artifactId>modulA</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>modulA</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>log4j</groupId>
    	<artifactId>log4j</artifactId>
    	<scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Die Einträge zu junit und log4j werden nicht automatisch an alle Kind-Module "vererbt", weil sie im Parent POM unter <dependencyManagement> stehen, und nicht unter <dependencies>.

Im Kind-POM (z.B. Modul A) wird die Abhängigkeit dann aktiviert (siehe <dependency>), ohne Angabe einer Versions-Nr.

Beliebige Teile (z.B. den <build>-Abschnitt) Auslagern und dann wieder importieren geht nicht. Aber man kann Dinge aus Parent POMs "erben", oder aus der settings.xml.
 
M

maki

Gast
Im Kind-POM (z.B. Modul A) wird die Abhängigkeit dann aktiviert (siehe <dependency>), ohne Angabe einer Versions-Nr.
Kannst dir auch den scope sparen, bzw. alle anderen einstellungen die in der <depdencymanagement> element gemacht wurden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
dtr84 Apache Ivy - Plattform-spezifische Abhängigkeiten in der "ivy.xml" parametrisieren Tools - Maven, Gradle, Ant & mehr 1
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven Site bleibt bei Abhängigkeiten hängen. Tools - Maven, Gradle, Ant & mehr 2
E Ant Problem mit Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 2
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
X Maven Auflösung von transitiven Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 5
V Projekt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
X Maven Abhängigkeiten in die jar einbinden Tools - Maven, Gradle, Ant & mehr 10
musiKk Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles Tools - Maven, Gradle, Ant & mehr 5
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
B Maven Abhängigkeit zu Pom vs direkten Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben