You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2019/01/15 15:32:46 UTC

[maven-site] 01/02: Recommend users to directly specify dependencies when using them directly

This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-site.git

commit 15cdcc9fb9cf78d1aba0f20e3341111a260dc7c9
Author: John Lin <jo...@gmail.com>
AuthorDate: Mon Jan 14 13:47:35 2019 +0800

    Recommend users to directly specify dependencies when using them directly
    
    The discussion is in
    https://lists.apache.org/thread.html/10b53804b5a18565f7f1a0677300d7f5c5fce539c94d9bad44efa6b1@%3Cusers.maven.apache.org%3E
---
 .../introduction/introduction-to-dependency-mechanism.apt      | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/content/apt/guides/introduction/introduction-to-dependency-mechanism.apt b/content/apt/guides/introduction/introduction-to-dependency-mechanism.apt
index 4d89d94..0b451c1 100644
--- a/content/apt/guides/introduction/introduction-to-dependency-mechanism.apt
+++ b/content/apt/guides/introduction/introduction-to-dependency-mechanism.apt
@@ -104,6 +104,16 @@ Introduction to the Dependency Mechanism
 
  []
 
+ Although transitive dependencies can help you to include desired dependencies, it is a good practice that you directly
+ specify the dependencies you are directly using in your own source code. This best practice proves its value especially
+ when the dependencies of your project constantly changes their dependencies. Assume that your project A specifies a
+ dependency on another project B, and project B specifies a dependency on project C. If you are directly using components
+ in project C, and you don't specify project C in your project A, it may cause build failure when project B suddenly
+ updates/removes its dependency on project C. Another reason to directly specify dependencies is that it provides better
+ documentation for your project: one can learn more information by just reading the POM file in your project. Maven also
+ provides a plugin {{{https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html}dependency:analyze mojo}}
+ for analyzing the dependencies and making this best practice more achievable.
+
 * {Dependency Scope}
 
  Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for