Java 不';t Maven依赖关系管理是否会创建不必要的依赖关系?
假设我有3个项目,C1,C2,p。其中p是父项目,C1和C2是子项目w.r.t。pom.xml文件。假设有两个依赖项D1和D2。如果C1依赖于D1,C2依赖于D2,那么将这两个依赖项都移动到父项目中有意义吗?添加到父节点不会强制C2同时依赖于D1和D2而不仅仅是D2吗?(与C1类似) 添加到父节点不会强制C2同时依赖于D1和D2而不仅仅是D2吗?(与C1类似) 将D2依赖项从C2移动到父级将使C1和C2都依赖于D2 通常,将依赖项从一个子项移动到父项将使父项的所有子项依赖于移动的依赖项 将这两个依赖项都移动到父项目上有意义吗 这取决于你想要达到的目标 例如,如果每个模块都使用某个实用程序库,那么将依赖项移动到父级可能是有意义的 但是,如果一个依赖项仅由一个子模块使用,那么让所有模块都依赖于这个依赖项就没有多大意义Java 不';t Maven依赖关系管理是否会创建不必要的依赖关系?,java,maven,Java,Maven,假设我有3个项目,C1,C2,p。其中p是父项目,C1和C2是子项目w.r.t。pom.xml文件。假设有两个依赖项D1和D2。如果C1依赖于D1,C2依赖于D2,那么将这两个依赖项都移动到父项目中有意义吗?添加到父节点不会强制C2同时依赖于D1和D2而不仅仅是D2吗?(与C1类似) 添加到父节点不会强制C2同时依赖于D1和D2而不仅仅是D2吗?(与C1类似) 将D2依赖项从C2移动到父级将使C1和C2都依赖于D2 通常,将依赖项从一个子项移动到父项将使父项的所有子项依赖于移动的依赖项 将这两个
例如,如果像SpringMVC这样的框架仅由Web应用程序(控制器)模块使用,那么让持久层模块依赖SpringMVC是没有意义的 作为最佳实践,我们应该声明父项目中的依赖项或API,这些依赖项或API在所有子项目中使用,并且版本锁定(极少数情况下,依赖项的版本会发生更改,或者根本不会发生更改)。你的情况也是如此 将这两个依赖项都移动到父项目上有意义吗
- 如果C1依赖于D1,C2依赖于D2,建议在子项目中声明它们
- 是的,会的
d1.version
和d2.version
的属性,这些属性在定义依赖项时用作子模块中的变量。这将使依赖项保持在其应有的位置,但允许您在一个位置维护依赖项版本。@dmos这无助于防止继承您不喜欢的两个位置的依赖项。除此之外,这些东西很难阅读和维护。最好的方法是,对于您在项目中使用的版本,只有一个位置(DependencyManager)。