Maven 包管理和前端的 Webpack 差不多,都有下面的特点:
- 从中央仓库下载第三方包
- 自动化构建
历史
以前使用手动编译 Jar 包,然后再根据 CLASSPATH 去找到对应的类再使用,十分麻烦。
后来出现了 Apache Ant,约定将 Jar 放到 /libs 下去统一编译。不过这些约定都因人而异,不好管理。
Maven 的出现使得包管理更加方便,会自动帮我们做很多的准备工作,减少配置。
Maven
Maven 有一条原则:约定优于配置。
Maven 除了包管理,还有自动化构建,如自动打包,跑测试等。
Maven 的中央仓库在这里:https://mvnrepository.com/。
Maven 会下载包到本地仓库,以使用缓存,存放目录为 ~/.m2
。
包属性
每个包都有一些属性来唯一确认这个包的资源路径。
- groupId 组织
- artifactId 每个功能对于一个包
- version 对于的版本
- scope
- test: 范围只在 test 相关代码中有用
- provided: 只在编译用,运行的时候不使用
- compile: 编译和运行都用
包冲突
当出现包冲突的时候,如
A -> B -> C0.1
\
D -> C0.2
Maven 会使用 C0.2,而不是 C0.1,因为 C0.2 更接近 root。
如果要使用 C0.1,可以将 C0.2 排除,或者 A 下面直接引入 C0.1,这样 C0.1 就会比 C0.2 离 root 更近了
网友评论