2017-09-04 16 views
1

私はマルチモジュールのmavenプロジェクトを持っています。親POMの下にあります。マルチモジュールのmavenプロジェクトのために、Mavenの依存関係がeclipseにない

<?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.rohit.patterns</groupId> 
    <artifactId>design-patterns</artifactId> 
    <version>1.0.1</version> 
    <packaging>pom</packaging> 

    <name>React.js Blank Project (from https://github.com/making/maven-reactjs-blank)</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <slf4j.version>1.7.21</slf4j.version> 
     <logback.version>1.1.7</logback.version> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.8</version> 
       <executions> 
        <execution> 
         <id>gulp</id> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <target> 
           <echo message="Gulp!" /> 
           <exec executable="gulp"> 
            <arg value="build" /> 
           </exec> 
          </target> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-resources-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>copy-resources</id> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/target/classes/META-INF/resources</outputDirectory> 
          <resources> 
           <resource> 
            <directory>dest</directory> 
            <filtering>false</filtering> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <modules> 
     <module>cache</module> 
    </modules> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>${slf4j.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
       <version>${logback.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
       <version>${logback.version}</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

子POMは以下の通りです。

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.rohit.patterns</groupId> 
     <artifactId>design-patterns</artifactId> 
     <version>1.0.1</version> 
    </parent> 
    <groupId>com.rohit.patterns</groupId> 
    <artifactId>cache</artifactId> 
    <version>1.0.1</version> 
    <name>cache</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

私はコードでログを使用することができません親にSLF4Jからログイン宣言しているが、同じにはMavenの依存関係は、したがって日食に生成されません。誰でも私にここで間違っていることを知らせてもらえますか?

答えて

1

親のpomに<dependencyManagement>を使用すると、子モジュールが使用可能な依存関係を設定できます。
これを集中管理し、唯一のバージョンを指定するのは良いことです。
しかし、それらを使用するには、子モジュールは<build>タグの<dependencies>タグで宣言する必要があります。

あなたは、たとえば、このように子ポンポンを変更できます。

<dependencies> 
... 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId>  
    </dependency> 
... 
</dependencies> 

あなたはこれらの依存関係が子モジュールに追加すべきであると考えている場合は、親ポンポン宣言でdependencyManagementオーバーdependenciesを好む:

<dependencies> 
...  
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>${slf4j.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>${logback.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-core</artifactId> 
    <version>${logback.version}</version> 
    </dependency> 
... 
</dependencies> 

これらの依存関係はすでに含まれているため、子モジュールで宣言する必要はありません。

関連する問題