mvn
- 1. maven 是什么
- 2. maven能解决什么问题
- 3. maven 需要配置和下载
- 4. 使用eclipse创建maven项目
- 5. xml依赖配置 作用范围
- 6. maven的常用命令
1. maven 是什么
Maven 在美国是一个口语化的词语,代表专家、内行的意思,
Maven是一个项目管理工具,
它包含了一个项目对象模型(POM:Project Model), 一组标准集合,
一个项目生命周期(jar包引入、编码、编译、单元测试、打包war/jar),
解决大部分的jar包冲突(类的冲突、多个jar包中存在相同的类(相同的类全路径)),
报错信息(类找不到),依赖管理系统和一键构建用来运行定义在生命周期中插件目标逻辑。
作用:jar包引入、编码、编译、单元测试、打包war/jar
2. maven能解决什么问题
项目开发不仅仅是写写代码而已,
期间会伴随着各种必不可少的事情要做,比如:
- 我们需要引用各种 jar 包,尤其是比较大的工程,
引用的 jar 包往往有几十个乃至上百个,
每用到一种 jar 包,都需要手动引入工程目录,
而且经常遇到各种让人抓狂的 jar 包冲突,版本冲突。 - 我们辛辛苦苦写好了 Java 文件,
可是只懂 0 和 1 的白痴电脑却完全读不懂,
需要将它编译成二 进制字节码。
好歹现在这项工作可以由各种集成开发工具帮我们完成,
Eclipse、IDEA 等都可以将代 码即时编译。
当然,如果你嫌生命漫长,何不铺张,
也可以用记事本来敲代码,然后用 javac 命令一 个个地去编译。 - 世界上没有不存在 bug 的代码,
计算机喜欢 bug 就和人们总是喜欢美女帅哥一样。
为了追求美为了减少 bug,因此写完了代码,
我们还要写一些单元测试,
然后一个个的运行来检验代码质量。 - 再优雅的代码也是要出来卖的。
我们后面还需要把代码与各种配置文件、资源整合到一起,
定型打包,如果是 web 项目,还需要将之发布到服务器,供人蹂躏使用。
试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,
能帮你构建工程,管理 jar 包,编译代码,
还能帮你自动运行单元测试,打包,生成报表,
甚至能帮你部署项目,生成Web站点,你会心动吗?
Maven 就可以解决上面所提到的这些问题
3. maven 需要配置和下载
http://maven.apache.org/download.cgi
- 配置maven的环境变量,jdk的环境变量必须配置好java8 或者 java11以上
- 一个是中央仓库的位置改为阿里云的
- 第二个是指定本地仓库
https://www.cnblogs.com/huangting/p/11079087.html
https://blog.csdn.net/huo920/article/details/82082403
4. 使用eclipse创建maven项目
截图为证
选好骨架webapp
导入servlet包
项目结构的完善
上面的结构还不是完善的,需要有测试包和写java代码的包
完整的项目结构
5. xml依赖配置 作用范围
比如下面的scope,是provided
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
</dependency>
- compile
默认的scope,表示 dependency 都可以在生命周期中使用
而且,这些dependencies 会传递到依赖的项目中。
- provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,
例如Servlet API和一些Java EE APIs。
这个scope 只能作用在编译和测试时,同时没有传递性
使用这个时,不会将包打入本项目中,只是依赖过来
使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
- runtime
表示dependency不作用在编译时,但会作用在运行和测试时
- test
表示dependency作用在测试时,不作用在运行时
6. maven的常用命令
- clean:清理
将项目根目录下target目录清理掉
- compile:编译
compile 是 maven 工程的编译命令,
作用是将 src/main/java 下的文件编译为 class 文件
输出到 target 目录下
- test:单元测试
单元测试类名有要求:XxxTest.java(命令只认Test结尾的)
将项目根目录下,src/test/java目录下的单元测试类都会执行
- package:打包
web project —war包
java project —jar包
将项目打包,打包到项目更目录下target目录
- install:安装
解决本地多个项目共用一个jar包,打包到本地仓库。
install 是 maven 工程的安装命令,
执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
找到项目的根路径,命令行。
mvn install
问题:
- package和install的区别
1. 都会经历过 清理、编译、测试、报告、打包2. package会打包生成target文件夹,生成jar或者war包3. install会将本地仓库放一份