2017-04-04 4 views
0

Ich habe ein Multi-Modul Maven Projekt bekommt, mit einer Struktur wie:Maven - hängt von mehrere Modulen Aggregator Projekt

projectA-parent 
    - module-1 
    - module-2 

Und ich habe ein anderes Projekt, wo ich in allen Modulen bringen will in projectA-parent als Laufzeitabhängigkeiten (es ist eine Spring-Anwendung, und jedes Modul in projectA-parent enthält Spring-Dienste, die ich in der Lage sein soll, autowire).

Was ich möchte, ist, etwas zu tun wie

<dependency> 
    <groupId>projectA-group</groupId> 
    <artifactId>projectA-parent</artifactId> 
    <scope>runtime</scope> 
</dependency> 

so, dass, wenn ich ein anderes Modul zu projectA-parent hinzufügen wird es automatisch als Laufzeitabhängigkeit gebracht (dh ich will nicht zu haben, füge jedes neue Modul als Abhängigkeit in meine Spring-Anwendung ein, wenn ich sie hinzufüge). Ist so etwas möglich?

Antwort

1

Sie

<dependencies> 
    <dependency> 
    <groupId>projectA-parent-groupId</groupId> 
    <artifactId>projectA-parent-artifactId</artifactId> 
    <type>pom</type> 
    </dependency> 
</dependencies> 

Dies wird transitively verwenden fügen Sie alle in com.my:commons-deps zu Ihrem aktuellen POM erklärt Abhängigkeiten.

Mit

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>...</groupId> 
      <artifactId>...</artifactId> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

fungiert als einfache 'umfassen' von Artefakten Versionen in Ihrer Abhängigkeitsmanagement. Daher wird keine Abhängigkeit in Ihrem Projekt hinzugefügt.

UPDATE:

Ein weiterer aprroach wäre eine BOM (Bill of Materials) zu verwenden. Überprüfen Sie diese link für die Verwendung von BOM. Es ist irgendwo unten versteckt.

Sie können eine Stückliste erstellen, die alle Ihre Module als Abhängigkeiten auflistet und dann können Sie die Stückliste in die pom.xml wie folgt sind:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>your_bom_group_id</groupId> 
      <artifactId>your_bom_artifact_id</artifactId> 
      <version>you_bom_version</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
+0

Das Problem ist, dass die Module nicht Abhängigkeiten von "ProjektA-Eltern", sondern Untermodule sind. Meine aktuelle Lösung (die die beste/einzige Option sein könnte) ist ein "BOM" -Modul, das alle anderen Module als Abhängigkeiten auflistet. Importieren Sie dann diese Stückliste als Typ: pom/scope: Importabhängigkeit, wie in Ihrer Antwort. Die Abhängigkeiten sind als scope: runtime in der Stückliste pom.xml markiert. – bobsyouruncle

1

Ich glaube, ich würde nur ein weiteres Modul hinzufügen, auf welche verwiesen die anderen Module in Ihrem Projekt, zB:

projectA-parent 
    - module-1 
    - module-2 
    - module-deps 

mit module-deps als Glas oder pom, die auf module-1 und module-2 abhängt. Sie müssen module-deps aktualisieren, wie Sie weitere Module hinzufügen, aber es ist nur an einem Ort.

Verwandte Themen