2017-11-29 11 views
0

Spring Boot APPでLog4J2バージョン2.10の最新バージョンを使用しようとしています。SpringBoot AppでのLog4J2バージョンの拡張

ウルスは、以下で作成された再使用可能なモジュールを起動するため、マイクロサービスソリューションで詳細を述べ -

再利用可能なログコンポーネント(POM断片次のように) -

<log4j.version>2.10.0</log4j.version> 
    <commons-logging.version>1.2</commons-logging.version> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.logging.log4j</groupId> 
       <artifactId>log4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.logging.log4j</groupId> 
       <artifactId>log4j-core</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-slf4j-impl</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>${commons-logging.version}</version> 
    </dependency> 

microServiceプロジェクトはその後意味それに -

-

 <log4j.version>2.10.0</log4j.version> 
    <commons-logging.version>1.2</commons-logging.version> 
    <dependency> 
     <groupId>a.b.c</groupId> 
     <artifactId>reusable-logger-starter</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 

2.10.0にjarファイルのバージョンを上書きするのにかかわらず、それは2.7.0を示し

enter image description here 質問1 - これは正常ですか?周り

私の仕事は)

<dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-slf4j-impl</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>a.b.c</groupId> 
     <artifactId>reusable-logger-starter</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 

MicroServiceのPOMファイルにjarファイルの下に含めるように質問2だった誰もが同様の問題に直面していますか?

答えて

0

ソリューションlog4j2のバージョンは

 <properties> 
      <log4j2.version> 
        2.10.0 
      </log4j2.version> 
     </properties> 

マイクロサービスのPOM-に上書き/依存関係の調停を含めることである - これは、アーティファクトの複数のバージョンが発生したときに使用される依存関係のバージョンを決定します。現在、Maven 2.0は「最も近い定義」をサポートしています。つまり、依存関係ツリー内のプロジェクトに最も近い依存関係のバージョンを使用することを意味します。プロジェクトのPOMで明示的に宣言することによって、常にバージョンを保証することができます。 2つの依存バージョンが依存関係ツリーの同じ深さにある場合、Maven 2.0.8まではどちらが勝つかは定義されていませんでしたが、Maven 2.0.9以来、それは数えられる宣言の順序です:最初の宣言が勝ちます。 "最も近い定義"は、使用されているバージョンが依存関係のツリー内でプロジェクトに最も近いバージョンであることを意味します。 A、B、Cの依存関係をA→B→C→D 2.0とA→E→D 1.0と定義すると、AからDへのパスEはより短い。 D 2.0を強制的に使用するために、AのD 2.0に依存関係を明示的に追加することができます。

0

マイクロサービスモジュールでspring-boot-starterがバージョン2.7を要求しましたが、再利用可能なロガー起動ツールが2.10.0を要求しました。 Mavenは2.10を決めました。はい、人々はこの動作に直面している:

は2を質問への簡単な答えがあるInterpreting "omitted for conflict" in maven 2 dependency tree

を参照してください。

Maven BOMのガイダンスについては、これを解決する方法をお尋ねください。

関連する問題