Maven
什么是maven:本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM:Project Object Model)。
作用:
- jar包管理,直接写标签自动下载,避免资源间的版本冲突问题
- 统一工程结构,提供标准的、跨平台的自动化项目构建方式
- 提供插件方便开发人员打包
Maven的安装
-
安装包下载
官网:http://maven.apache.org/
下载地址:http://maven.apache.org/download.cgi
-
java环境变量确认
进入cmd执行javac命令确认java环境变量无误:javac
-
解压maven安装
不要包含中文以及特殊符号
-
配置MAVEN_HOME
-
配置path
不要删除原有的path,直接在path中添加一下信息%MAVEN_HOME%\bin
-
确认是否安装完成
仓库
概念:用于储存资源,包含各种jar包
分类:
- 本地仓库:本电脑
- 远程仓库:非本机电脑
- 中央仓库:开源
- 私服:部门/公司范围内
私服作用:具有版权,一定范围共享,内部开放
坐标
maven中描述仓库中资源的位置
- 坐标: 唯一确定某一个文件夹,然后就能够找对应的jar
- https://mvnrepository.com/
主要组成:
- groupId:定义当前maven项目隶属组织名称
- artifactId:定义当前maven项目名称
- version:定义当前项目版本号
阿里镜像配置
-
进入maven_home的目录
-
进入conf目录
-
编辑settings文件
-
修改本地仓库地址
<localRepository>本地仓库目录</localRepository>
-
配置阿里镜像
在mirros标签下面添加一下内容
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
全局setting与用户setting区别:全局定义l当前计算机maven的公共配置,用户定义的是当前用户的配置
-
目录结构
- project-name
- src
- main
- java
- resources
- test
- java
- resources
- main
- pom 指定jar
- src
- web-project
- src
- main
- java
- resources
- webapp
- test
- java
- resources
- main
- pom 指定jar
- src
创建maven工程
和普通工程一样只是选择的是maven
注意最后创建完成后的弹窗选择:Enable Auto-Import
maven工程和普通工程使用唯一区别在于jar可以通过pom指定
web 工程tomcat配置
-
tomcat插件
添加插件到pom文件中
<dependencies> </dependencies> <!--构建--> <build> <!--设置插件--> <plugins> <!--具体的插件配置--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build>
-
.普通创建tomcat的方式一致
依赖
具有传递性,可分为直接依赖、间接依赖;路径优先,声明优先
效果: 导入其他包如果说该包依赖于其他jar你在当前项目也会获得这些jar
-
可选依赖
-
可以选择依赖的jar包不给其他工程可见
<!--设置当前项目所依赖的所有jar--> <dependencies> <!--设置具体的依赖--> <dependency> <!--依赖所属群组--> <groupId>mysql</groupId> <!--依赖所属项目--> <artifactId>mysql-connector-java</artifactId> <!--依赖版本号--> <version>8.0.18</version> <optional>true</optional> </dependency> </dependencies>
-
-
排除依赖
-
主动排除送的jar
<dependency> <groupId>com.itheima</groupId> <artifactId>maven-hello</artifactId> <version>1.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </exclusion> </exclusions> </dependency>
-
依赖范围
- compile 默认都有
- test 只能在test包里面使用
- provide 除了不参与打包其他都有
- runtime 只参与打包其他地方都没有
maven生命周期
compile–>test-complile–>test–>package–>install
-
生命周期特点
- 执行后面的生命周期也会先顺序执行前面的生命周期
-
clean
- 清除target目录,清除缓存
-
package
- 打包工程
-
install
- 将jar安装到本地仓库
插件
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
- 默认maven在各个生命周期上绑定有预设的功能
- 通过插件可以自定义其他功能
区别:WAR VS JAR
- war : web工程,能够直接部署到tomcat
- jar: 普通的java工程,多半是工具类或则框架的源码