2016-11-08 12 views
0

mavenマルチモジュールを使用してプロジェクトを分離したいので、私はコモンの依存関係を作り始めました。親プロジェクトから依存関係が継承されませんでした

しかし、私は子供モジュールのMavenプロジェクトに親プロジェクトで定義された依存パッケージを使用しようとimport org.springframework.transaction.annotation.Transactional;

EclipeはThe import org.springframework cannot be resolved

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

子供を言うpom.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

プロジェクトをどのように構築していますか?親から、そしてコマンドラインで? IDEで? – Tunaki

+0

@俊明私はまだ何もビルドしていない私はちょうどyoutubeのtutoに従っている...私は何も実行していない – Youssef

+0

何かを実行していない場合、どのようにエラーがありますか? – Tunaki

答えて

0

ここでは2つのことを行う必要があります。

まず、親のpomに、<dependencyManagement>タグ内のすべての依存関係を追加します。これにより、依存関係を子が利用できるようになります。だから今これはあなたの親のポンが見える方法です。

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

第二に、あなたの子供のポンポンでは、明示的にちょうどgroupIdartifactIdを指定することで、依存関係を含める必要があります。バージョンは親のpomによって処理されるので、だから今あなたの子供ポンはこのように見えます。

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

あなたが持っているとき、親ポンポンと1つまたは複数の子POMの依存関係のバージョンとマルチモジュールプロジェクトは、親のポンポンで扱われるため、この方法ですと、それに持っているだろう理由子供のポンは単にそれを継承します。また、親pomに依存関係を含めると、mavenはそれらの依存関係を子が利用できるようになることを単に理解します。しかし、子がこれらの依存関係のいずれかを使用する必要がある場合、子はgroupIdartifactIdだけを使用して依存関係を明示的に指定する必要があります。

関連する問題