2017-11-24 15 views
0

2つの単純なSpring Bootアプリケーションがあります.1つはeureka-server、もう1つはeureka-clientです。どちらもmavenアグリゲータモジュールeureka-sampleにあります。一般的な依存関係をmavenモジュールから親ブートモジュールの親モジュールに移動する方法

eureka-servereureka-clientのアプリケーションに共通の依存関係があります。私は親のpomに移動したいので、今度は子モジュールのそれぞれにそれらを含める必要はありません。

私は<dependencyManagement>セクションの下で、親ポンポンに子モジュールからの依存spring-boot-starter-testを移動しようとしたが、その後、子モジュールでのテストでは、これらのクラスは、jarを見つけることができなかったとしてコンパイルすることができませんでした。私が誤って設定したり、間違ったセクションに置いたりしている可能性があります。

どうすればこの問題を解決できますか?

ユーレカ・サンプル(親の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>com.study.spring</groupId> 
    <artifactId>eureka-sample</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>eureka-sample</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
     <spring-cloud.version>Dalston.SR4</spring-cloud.version> 
    </properties> 

    <modules> 
     <module>eureka-server</module> 
     <module>eureka-client</module> 
    </modules> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.8.RELEASE</version> 
     <relativePath /> 
    </parent> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-dependencies</artifactId> 
       <version>${spring-cloud.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <fork>true</fork> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

ユーレカ・サーバー/の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> 
    <artifactId>eureka-server</artifactId> 
    <packaging>jar</packaging> 
    <name>eureka-server</name> 
    <description>Demo project for Spring Boot</description> 
    <parent> 
     <groupId>com.study.spring</groupId> 
     <artifactId>eureka-sample</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-starter-eureka-server</artifactId> 
     </dependency> 

     **<!-- ALL THE FOLLOWING 3 DEPENDENCIES SHOULD GO TO PARENT POM SO THAT I DO NOT HAVE TO PUT THEM IN EVERY CHILD MODULE -->** 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

ユーレカ・クライアント/の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> 
    <artifactId>eureka-client</artifactId> 
    <packaging>jar</packaging> 
    <name>eureka-client</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>com.study.spring</groupId> 
     <artifactId>eureka-sample</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-starter-eureka</artifactId> 
     </dependency> 

     **<!-- ALL THE FOLLOWING 3 DEPENDENCIES SHOULD GO TO PARENT POM SO THAT I DO NOT HAVE TO PUT THEM IN EVERY CHILD MODULE -->** 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

</project> 

答えて

2

<dependencyManagement>セクションではなく、親の.pomの<dependencies>セクションに共通の依存関係を入れてみてください。

<dependencyManagement>を使用すると、すべての子モジュールの依存関係を準備して構成するだけですが、実際にそれらを使用するには、依然として子モジュール内から参照する必要があります。

違いは微妙ですが、重要です - 詳細はhttps://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.htmlを参照してください。

関連する問題