【Maven笔记1】Maven介绍
1、没有maven之前
在没有maven之前,我们的Java项目在去管理依赖的时候,一般都是需要人工手动将所需要的包添加到classpath下面。这种方式有下面几个问题:
- 需要到网络上或其他途径去获取包,分散且浪费精力
- 如果包有依赖其他包,又需要把依赖的包也加入进来,人工管理依赖太费劲
- 当遇到包冲突时,挨个去查找和排查,那简直就是灾难了
当然,还有Ant、Make等构建工具,我之前接触的一个老项目用的就是Ant,Ant能解决一部分工程构建的问题,但他是命令式的,没有生命周期的概念,你必须给Ant下达必要的操作指令才行,还是不够简单。
2、maven是什么
maven是一款强大的软件构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生产报告,再到打包和部署。它最大化的消除了重复,抽象了构建的生命周期。
另外,maven强大的地方在于它的插件机制。maven有大量成熟的插件,来帮助我们完成特定的构建任务。
maven的核心功能有:
- 提供了一套标准化的项目结构(我们熟知的src/main/java等结构约定)
- 提供了一套标准化的构建流程(清理、编译、测试、打包、发布)
- 提供了依赖管理机制、中央仓库(企业内网环境可以搭建私服仓库)
- 同时可以帮助我们管理项目信息,比如开发者列表、许可证、版本控制系统地址等
3、maven项目结构
一个典型的maven项目结构如下:
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target
- 其中根目录a-maven-project是项目名称
- pom.xml是项目描述文件,也是maven进行项目管理的核心文件
- src/main/java是存放java源文件的目录
- src/main/resources是存放资源文件的目录,比如*.properties文件
- src/test/java是存放测试源码文件的目录
- src/test/resources是存放测试资源文件的目录
- 编译打包生产的文件都放在target目录下,比如编译生成的*.class文件
参考
- https://www.liaoxuefeng.com/wiki/1252599548343744/1309301146648610
- 《Maven实战》-许晓斌