2016-07-20 27 views
0

Wie referenziere ich ein Modul, das in einer pom.xml enthalten ist?Referenzmodule in POM-Verpackung

Im pom.xml verwiesen unten, wie würde ich die Module auf der dieser pom enthalten, so dass es wie so in anderen Projekten referenziert werden:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

pom.xml

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>module1</module> 
     <module>module2</module> 
     <module>module3</module> 
    </modules> 

    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.jettison</groupId> 
      <artifactId>jettison</artifactId> 
      <version>1.3.3</version> 
     </dependency> 
    </dependencies> 

</project> 
+0

zu klären: Sie möchten ein Modul eines Projekts als Abhängigkeit in einem anderen Projekt verwenden? Ist dieses Projekt noch ein Modul (das heißt, es ist der gleiche Aggreator pom) oder ist es ein komplett getrenntes Projekt? –

+0

ist es ein völlig separates Projekt. Alles wird in einem Artefakt veröffentlicht, also hat das Artefakt com.amplus: parent: 1.0-SNAPSHOT & jedes Modul. – bdparrish

Antwort

0

Ich denke, Das Beste, was Sie tun können, ist, Ihre Untermodule wie folgt in den dependencyManagement-Bereich Ihres Eltern-POM zu setzen:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module1</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module2</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module3</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    <dependencies> 
</dependencyManagement> 

Dann können Sie jedes Ihrer Submodule mit den erforderlichen Abhängigkeiten konfigurieren, ohne sich um die korrekte Versionsnummer kümmern zu müssen.

<!-- module2's dependencies --> 
<dependencies> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>module1</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>module3</artifactId> 
    </dependency> 
<dependencies> 

Wenn Sie alle Submodule als Abhängigkeiten der Mutter POM erklären, dann würden Sie sich mit zyklischen Abhängigkeiten beenden. Zum Beispiel:

[parent] -> [module1] -> [parent] 

Maven mag das nicht.