摘要:
这里简单用到了 Maven 属性,首先使用 <properties> 元素定义 Maven 属性,该例中定义了一个 org.springframework.version 子元素,有了这个属性定义之后,Maven 运行的时候会将 POM 中的所有 ${org.springframework.vers 阅读全文
摘要:
传递性依赖会给项目隐式地引入很多依赖,这极大地简化了项目依赖的管理,但是有些时候这种特性也会带来问题。 例如,当前项目有一个第三方依赖,而这个第三方的依赖由于某些原因依赖了另外一个类库的 SNAPSHOT 版本,那么这个 SNAPSHOT 就会成为当前项目的传递性依赖,而 SNAPSHOT 的不稳定 阅读全文
摘要:
假设有这样换一个依赖关系,项目 A 依赖于项目 B,项目 B 依赖于项目 X 和 Y,B 对于 X 和 Y的依赖都是可选依赖: A -> B B -> X(可选) B -> Y(可选) 根据传递性依赖的定义,如果所有者三个依赖的范围都是 compile,那么 X、Y 就是 A 的 compile 范 阅读全文
摘要:
Maven 引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不同考虑这些依赖会引入什么传递性依赖。但有时候,当传递性依赖造成问题的时候,我们就需要清楚地知道该传递性依赖是从哪条路径引入的。 例如,项目 A 有这样的依赖关系: A -> 阅读全文
摘要:
依赖范围不仅可以控制依赖与三种 classpath 的关系,还对传递性依赖产生影响。 假设 A 依赖于 B,B依赖于 C,我们说 A 对于 B 是第一直接依赖,B 对于 C 是第二直接依赖,A 对于 C 是传递依赖。 第一直接依赖的范围和第二直接依赖的范围决定了传递性依赖的范围。 下面最左一列表示第 阅读全文
摘要:
Maven 在编译项目主代码的时候需要使用一套 classpath。在编译和执行测试的时候会使用另外一套 classpath。实际运行的时候,又会使用一套 classpath。 依赖范围就是用来控制依赖与这三种 classpath(编译 classpath、测试 classpath、运行 class 阅读全文