大家好,我是IT修真院郑州分院第6期的学员李亚衡,一枚正直纯洁善良的JAVA程序员
今天给大家分享一下,修真院官网JAVA任务一,深度思考中的知识点——Clean,Install,Package,Deploy分别代表什么含义?
1.背景介绍
什么是Maven
A:Maven是干什么的?
1.添加依赖
不用maven的时候所有的jar都不是你家的,需要去各个地方下载拷贝,用了maven所有的jar包都是你家的,想要谁,叫谁的名字就行。
2.编译代码
把代码编译成电脑能看懂的(0或1)二进制文件
3.建立项目目录
让我们知道什么代码该呆在什么地方
4.代码打包上传服务器
写的再好的代码不在服务器上运行那留着做传家宝吗?
概括地说,Maven可以简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的连接。
总的来说Maven希望把软件开发中的一些最佳实践和模式都整合和固化下来,这样使用Maven来进行开发时,开发过程更爽,生产出来的软件更棒,具有以上所罗列的各种特性。
B:Maven和别的项目管理软件的区别,拿Ant做比较
简单的说Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。
两者相比较,Maven比Ant多了一些功能
通过pom对软件项目进行管理
内含许多隐性规则,比如项目目录构造规则,
拥有强大的依赖管理,通过Repository对依赖统一管理储存
可以构建软件的生命周期
C:Maven的约定优于配置的思想
maven的配置文件看上去很复杂,其实只需要根据项目的实际需求,设置个别的几个配置项而已。
它有自己的一套默认配置,比如项目目录模板(src/main/java)
我们不需要去修改这些约定内容。这就是所谓的“约定优于配置”
2.知识剖析
mvn clean:清理项目建的临时文件,一般是模块下的target目录
mvn package:打包到本项目,一般是在项目target目录下
mvn install:打包会安装到本地的maven仓库中
mvn deploy:将打包的文件发布到远程(如服务器)参考,提供其他人员进行下载依赖
3.常见问题以及解决方案
1.Maven项目目录构造杂乱的问题
使用Maven因为其约定由于配置的思想,我们要遵守其项目目录构造的约定,否则将会带来诸多不便
运行一条mvn clean package命令,Maven会帮你清除target目录,重新建一个空的,编译src/main/Java类放到target/classes,复制src/main/resources的文件至target/classes,编译src/test/java至target/test-classes,复制src/test/resources的文件至target/test-classes;然后运行所TEST;测试通过后,打包,存在target目录下。说实话Maven做的事情一点也不少,只是都对用户隐蔽起来了,它仅仅只要求你遵循它的约定而已
2.打包war包时install报错找不到web.xml文件
只有在WEB项目下才使用war打包,否则因为java项目下没有web.ini和web.xml,就会出现报错,将打包方式更改为jar就不会出现该问题
5.编码实战
clean之前
Clean之后 target消失
package和instatall的区别
先 执行package 本地仓库并没有jar包
执行install 本地仓库出现JAR包
6.扩展思考
手动导入依赖Jar包和用pom导入依赖Jar的区别
手动导入需要找包,然后导入,做大项目太浪费时间
用pom.xml导入jar包,只需配置pom,maven自动下载并导入
7.参考文献
Maven 各命令执行流程解析和说明
http://blog.csdn.net/jun55xiu/article/details/22175505
深入理解maven及应用
http://blog.csdn.net/chaofanwei/article/details/36197183
MAVEN项目标准目录结构
http://blog.csdn.net/lengyue_wy/article/details/6718637
8.更多讨论
Maven常用的四个命令_腾讯视频
Clean了什么?
Clean了target下面的文件
什么时候Clean
当代码做出了修改需要重新编译运行的时候进行Clean,建议每次执行其他命令之前都执行Clean
Package和install有什么区别?
Package只打包到项目目录target下
Install打包到target下和.m2仓库目录下
pom配置jar包语句在哪里找到?
https://mvnrepository.com/
搜索想要的JAR包并选择版本就会有写好的语句可以复制
感谢大家观看!
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
网友评论