2016-04-18 11 views
0

Ich habe zwei Mavenartefakte in meinem privaten Repository, com.test.Parent und . Child ist abhängig von Parent.Maven packen transitive Abhängigkeiten JAR in einen Ordner

Das einzige, was ich Maven tun soll, ist das Herunterladen der Child Glas und alles, worauf es ankommt, und dann entpacken Sie es in ein Verzeichnis.

konnte ich eine pom.xml zusammen stellen, die die Child Downloads von mvn clean dependency:unpack jedoch um den Aufruf der transitive Abhängigkeit schließe ich es musste, um manuell im pom.

Was ich möchte ist zum Beispiel maven initialize aufrufen und meine erforderlichen Abhängigkeiten würden heruntergeladen werden. Was ich jetzt haben, ist dies:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>unpack</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
         <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>com.test</groupId> 
           <artifactId>Child</artifactId> 
           <version>1.2.3</version> 
           <type>jar</type> 
           <includes>**</includes> 
           <excludes>META-INF/**</excludes> 
           <outputDirectory>somepath/sources</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <excludeTransitive>false</excludeTransitive> 
         <includes>**</includes> 
         <outputDirectory>somepath/depend</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>com.test</groupId> 
        <artifactId>Child</artifactId> 
        <version>1.2.3</version> 
        <type>jar</type> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 

Allerdings, wenn ich mvn clean initialize laufen, nur die Child-Dateien werden heruntergeladen und entpackt.

POM-Datei von com.test.Child enthält diese:

<groupId>com.test</groupId> 
<artifactId>Child</artifactId> 
<version>1.2.3</version> 

<dependencies> 
    <dependency> 
     <groupId>com.test</groupId> 
     <artifactId>Parent</artifactId> 
     <version>7.8.9</version> 
    </dependency> 
</dependencies> 

Haben Sie ein Problem mit dem Setup zu sehen? Das Endspiel ist, dass Entwickler einfach eine pom.xml herunterladen können, mvn <something> ausführen und alle Abhängigkeiten werden automatisch heruntergeladen und in eine bestimmte Struktur entpackt.

Dank

Edit: Wenn ich meine lokalen Maven-Repository löschen und diese pom laufen, beide Child und Parent heruntergeladen werden. Also die Abhängigkeit ist da, aber Parent wird nicht von der unpack-dependencies Ziel abgeholt.

Antwort

0

Ich löste das Problem durch Verschieben der <dependencies> Block außerhalb <plugins>. So dass die endgültige POM Struktur ist:

<project> 
    <build> 
    <plugins> 
     <plugin> 
     ... 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>com.test</groupId> 
      <artifactId>Child</artifactId> 
      <version>1.2.3</version> 
     </dependency> 
    </dependencies> 
</project> 

Aber wenn jemand mir erklären kann, warum dies hilft, das geschätzt würde.

Verwandte Themen