web-dev-qa-db-ja.com

Maven依存関係ツリー出力の「+-」と「\-」の違いは何ですか?

次の例を検討すると、「+-」記号と「\-」記号の違いは何ですか。また、それらは何を意味しますか。

[INFO] [dependency:tree]
[INFO] org.Apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.Apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] |  \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] |     \- commons-digester:commons-digester:jar:1.6:compile
[INFO] |        \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.Apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO]       \- commons-collections:commons-collections:jar:2.0:compile
22
genonymous

これらの記号には何の意味もありません。ツリーの出力をよりよく読み取るために存在しているだけです。

spring-webmvc依存関係で、それが何をするかをよりよく理解するためのより複雑な出力を次に示します。

[INFO] +- org.springframework:spring-webmvc:jar:4.2.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.2.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.2.2.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-aop:jar:4.2.2.RELEASE:compile
[INFO] |  |     \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-core:jar:4.2.2.RELEASE:compile
[INFO] |  |  \- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  +- org.springframework:spring-expression:jar:4.2.2.RELEASE:compile

依存関係ツリーをレベルと見なします。最初のレベルは直接の依存関係に対応します。 2番目のレベルは、これらの直接的な依存関係などの推移的な依存関係に対応します。

基本的に、同じアーティファクトに対して同じレベルに複数の依存関係がある場合は、+-が表示されます。それ以外の場合は、ツリーの「終わり」を示す\-が表示されます(つまり、葉につながるパス)。

23
Tunaki

\-記号は、このノードが現在の親にリストされている最後の兄弟であることを示します

14
BigBadDog

プラス記号は同じレベルの複数のノードを示し、-記号は、そのレベルの階層の単一ノードを示します。

したがって、あなたの場合、maven-dependency-plugin+ symbol)は推移的な依存関係を持っていますmaven-reporting-implおよびdoxia-site-renderer最初のレベルで、次にmaven-reporting-implは(-記号)commons-validator直接推移的な依存関係などとして。

4
A_Di-Matteo