2016-08-08 18 views
0

Ich habe ein Maven-Projekt, das zwei Submodule enthält, man hängt davon ab, andere.List Maven externe Abhängigkeiten - ohne Submodule im aktuellen Projekt

Das Projekt hat keinen Code, aber maven ist damit einverstanden. Wenn ich mvn package führe, übergibt es OK und erzeugt (leere) JAR-Dateien.

Allerdings, wenn ich mvn dependency:list bekomme ich folgende Fehlermeldung:

Failed to execute goal on project foob-two: Could not resolve dependencies for project com.example.foob:foob-two:jar:1.0.0-SNAPSHOT: Failure to find com.example.foob:foob-one:jar:1.0.0-SNAPSHOT in [Repo] 

Es scheint, wie die Maven Abhängigkeit Plugin funktioniert nur, nachdem die Module an den lokalen Repo hochgeladen haben.

Merkwürdig, wenn ich die Abhängigkeitsliste gleichzeitig als Paket mache, dh mvn package dependency:list, es funktioniert. Es scheint also, dass Maven in einigen Kontexten einen anderen Abhängigkeitsauflösungsmechanismus hat.

Kann jemand das Verhalten erklären? Kann ich mvn dependency:list als eigenständigen Befehl ausführen?


Hier ist die Wurzel 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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example.foob</groupId> 
    <artifactId>foob</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0.0-SNAPSHOT</version> 
    <modules> 
     <module>foob-one</module> 
     <module>foob-two</module> 
    </modules> 
</project> 

Hier ist das erste Teilprojekt:

<?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"> 
    <parent> 
     <groupId>com.example.foob</groupId> 
     <artifactId>foob</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>foob-one</artifactId> 
    <packaging>jar</packaging> 
    <modelVersion>4.0.0</modelVersion> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.0</version> 
     </dependency> 
    </dependencies> 
</project> 

Hier ist das zweite Projekt:

<?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"> 
    <parent> 
     <groupId>com.example.foob</groupId> 
     <artifactId>foob</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>foob-two</artifactId> 
    <packaging>jar</packaging> 
    <modelVersion>4.0.0</modelVersion> 

    <dependencies> 
     <dependency> 
      <groupId>com.example.foob</groupId> 
      <artifactId>foob-one</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

Vielleicht ein Maven Bug. Hast du es mit einer neueren Version versucht? – davidxxx

Antwort

0

mvn dependency:list kann allein ausgeführt werden . Es scheint, als ob Ihr Projekt wegen fehlender Abhängigkeiten fehlschlägt. Versuchen Sie zuerst mvn install.

how to make one module depends on another module artifact in maven multi-modules

+0

Ich stimme zu - aber in meinem Fall möchte ich das Paket nicht in die Registrierung installieren. Es scheint vernünftig, dass ich, wenn ich ohne Installation bauen kann, in der Lage sein sollte, eine Liste von Abhängigkeiten zu kompilieren, ohne zu installieren! – Matthew

+0

@Matthew Wenn Sie Ihre Abhängigkeiten nicht in Ihrem MVN Repo installieren möchten, können Sie ' jar danmitch