2016-11-08 4 views
0

Ich möchte Maven Multi-Modul verwenden, um mein Projekt zu trennen, damit ich beginnen, eine Commons Abhängigkeiten zu machen.Abhängigkeiten wurden nicht vom übergeordneten Projekt geerbt

Aber wenn ich versuche, ein Abhängigkeitspaket im übergeordneten Projekt in ein Kind Modul Maven Projekt import org.springframework.transaction.annotation.Transactional;

Eclipe definiert verwenden sagen The import org.springframework cannot be resolved

Elternpom.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>ao.parent</groupId> 
    <artifactId>ao-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
    <module>ao-commons</module> 
    </modules> 

    <dependencies> 

     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 


     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 

    </dependencies> 

</project> 

Kindpom.xml

<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> 

    <parent> 
    <groupId>ao.parent</groupId> 
    <artifactId>ao-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>ao-commons</artifactId> 

    <packaging>jar</packaging> 

</project> 
+0

Wie bauen Sie das Projekt? Von der Eltern und auf der Kommandozeile? In einer IDE? – Tunaki

+0

@Tunaki Ich habe noch nichts gebaut, ich folge nur einem youtube tuto ... ich habe nichts ausgeführt – Youssef

+0

Wie können Sie Fehler haben, wenn Sie nichts ausgeführt haben? – Tunaki

Antwort

0

Sie müssen hier zwei Dinge tun.

Erstens, in Ihrem Eltern Pom, fügen Sie alle Ihre Abhängigkeiten innerhalb der <dependencyManagement> Tag. Dadurch wird sichergestellt, dass die Abhängigkeiten für das Kind verfügbar sind. So wird nun dein Elternteil aussehen.

<?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>ao.parent</groupId> 
    <artifactId>ao-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
    <module>ao-commons</module> 
    </modules> 

    <dependencyManagement> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 


     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.0.5.RELEASE</version> 
     </dependency> 
    <dependencies> 
    </dependencyManagement> 

</project> 

Zweitens in Ihrem Kind pom, müssen Sie explizit die Abhängigkeiten sind nur durch die groupId und artifactId angeben. Da die Version wird von der Eltern Pom behandelt werden. Jetzt wird dein Kind so aussehen.

<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> 

    <parent> 
    <groupId>ao.parent</groupId> 
    <artifactId>ao-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>ao-commons</artifactId> 

    <packaging>jar</packaging> 


    <dependencies> 
    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 
    </dependencies> 
</project> 

Der Grund, zu dem Sie es auf diese Weise haben wird, ist, weil, wenn Sie ein Multi-Modul-Projekt mit einem Elternteil pom und einem oder mehreren Kind pom die Abhängigkeit der ist Version mit der pom Eltern behandelt werden und die Child Pom erbt es einfach. Wenn Sie eine Abhängigkeit in den übergeordneten Pom einfügen, wird maven einfach verstehen, dass diese Abhängigkeiten für das Kind verfügbar sind. Wenn das Kind jedoch eine dieser Abhängigkeiten verwenden muss, muss das untergeordnete Element die Abhängigkeiten explizit angeben, indem nur groupId und artifactId verwendet werden.

Verwandte Themen