背景知识
我们先回忆下关键字package:为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间。
package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包,约定俗成的写法是:公司的域名倒写+项目名+其他。如:
package com.apple.javatest.project1.rest
package语句中,“.”指明了包的层次,Java编译器会按包的层次去找对应的类。
我们看到,package可以用来区分不同的模块,比如rest接口类都用上面的包名。
而其他类若要使用该包名下的类,则通过import语句引入某个类。
刚才说的是在一个工程里面,那不同的工程之间呢?可以首先想一下Java(或者说oracle公司)提供的类,我们是如何使用的?通过安装JDK,配置classpath,我们就可以使用java的lang、util等包里面的类。而这些类,是通过打包成jar文件的形式提供的。
同样,如果我们要使用其他工程的类,也可以让他打成jar,然后拷贝过来。
问题出现
如若项目比较大、工程比较多,刚才那个jar文件被多个工程依赖,就会出现拷来拷去的问题,所以我们引入Maven来解决这个问题。参考之前的文章:使用Nexus作为你的依赖存储库
其他重要原因
1、规范
借助Maven可以以一种规范的方式下载jar包,所有知名框架或第三方工具的jar包都是按照统一的规范存放在Maven的中央仓库中。
2、复杂的依赖关系
如果所有jar包之间的依赖关系都需要程序员自己非常清楚,那么就会极大的增加学习成本。