maven中的仓库
需要jar包时,先到本地仓库中找,没有就从中央仓库去下载到本地仓库。
中央仓库很多都在国外,下载速度慢。国内的一些公司在自己的服务器上搭建了maven仓库(中央仓库的镜像),供内部人员使用,因为在公司私有的服务器上,所以又叫做私服。
有的公司把自己的maven分享出来,免费供开发者使用,比如阿里云的maven仓库。
如果使用了私服,需要jar包时,先到本地仓库中去找,找不到再去私服上找,如果私服上没有,就从中央仓库下载到私服,再从私服下载到本地仓库。
Maven中的坐标
Maven用坐标来唯一标识一个项目、依赖,坐标由三部分组成:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
- groupId 公司、组织的名称
- artifactId 项目名称
- version 项目版本号。SNAPSHOT,快照,开发中的版本,不稳定;Release,发布版本。
依赖的作用域:
依赖有3个作用时期:编译时、测试时、正式部署运行时。
有的依赖3个时期都要使用,有的依赖只在特定时期使用,可使用<scope>设置依赖的作用域:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
<scope>常用的值:
- compile 默认值,编译、测试、正式运行,一般都使用默认值
- test 只在测试时有效,比如junit
- runtime 只在运行时有效(测试+正式运行)
- provided 只在编译、测试时有效
Maven常用命令
- mvn -v或-version 显式Maven的版本信息,一般用来验证maven是否配置成功
在cmd下就可以管理项目,先切换到项目的根文件夹:
- mvn clean 清理。删除target文件夹(之前编译、打包产生的文件)
- mvn compile 编译。对项目(src/main/java)进行编译
- mvn test 测试。先执行compile对项目(src/main/java)进行编译,再对项目测试(src/main/java)进行编译
- mvn package 打包。先执行compile、test,在将项目打包为jar或war。
- mvn install 安装。先执行compile、test、package,再将项目安装到本地仓库。本地仓库groupIdartifactId,是放在公司、组织文件夹下的。
- mvn deploy 发布。将项目部署到web服务器。
这5个命令代表了项目的生命周期(Lifecycle)。
eg、我先将项目打包为jar,之后修改了代码,我执行install时,maven会自动先执行install之前的生命周期命令。
如果只是将之前的jar安装到本地仓库,那我做的修改岂不是无效了?为防止这种情况发生,maven会自动调用之前生命周期的方法,来更新项目。
这就是maven的对项目的自动构建。你执行deploy,编译、测试、打包、安装、部署都给你弄了。
每个命令都对应一个插件,执行命令实际是调用对应的插件来完成。
maven集成了tomcat插件,我们直接直接将项目部署到tomcat中:
- maven tomcat:run
注意:每次使用tomcat后,需要先点击停止,如果不点停止,直接重新部署、重启tomcat,可能会出现端口占用、内存泄漏的问题。