项目管理工具Maven

1.Maven简介

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
核心功能:

  1. 依赖管理:maven工程对jar包的管理。
  2. 一键构建:项目从编译、测试、运行、打包、安装, 部署整个过程都交给maven进行管理,每个过程对应一个maven命令。
    mvn tomcat:run ====> 运行项目

2.安装配置

  1. 下载: http://archive.apache.org/dist/maven/maven-3/
  2. 解压: 注意路径没有中文,没有空格
  3. 配置环境变量:
    新建 MAVEN_HOME maven解压的路径
    编辑 Path 新建 %MAVEN_HOME%\bin
  4. 测试: cmd ===> mvn -v

3.Maven仓库种类

  1. 本地仓库(默认是c盘,建议修改)
    重新指定本地仓库: 在conf/setting.xml文件中添加:
    <localRepository>指定文件夹</localRepository>
  2. 远程仓库(私服)
  3. 中央仓库(几乎所有开源的jar包)]
  4. 仓库间的关系:
    启动maven工程,maven会通过pom文件的jar包坐标去本地找对应jar包
    默认情况下,如果本地仓库没有jar包,会自动去中央仓库下载
    在公司中,如果本地没有,会先从私服上下载,如果私服没有,可以从中央仓库下载,也可以本地上传

4.目录结构

web工程(java工程只包含前四个):
src/main/java ----> 核心代码部分
src/main/resources ----> 配置文件部分
src/test/java ----> 测试代码部分
src/test/redources ----> 测试配置文件
src/main/webapp ----> 页面资源:js、css、html等

5.常用命令

mvn clean —> 删除编译好的本地项目信息(删除target目录)
mvn compile —> 将src/main/java代码进行编译放置在target目录下
mvn test —> 编译src/main/test和src/main/java下的java代码
mvn package —> 将项目进行打包(同时会编译)放在target目录下(至于是war包还是jar包由pom.xml中的配置决定)
mvn install —> 将代码进行编译并打包,并把包放在本地仓库下
mvn deploy —> 部署项目,包含了前面5个命令

6.生命周期(3套)

清理生命周期
清除项目编译信息 ====> clean
下面的五个命令就是一个默认的生命周期,执行后面的命令前面的命令也会执行一遍
编译 ====> compile
测试 ====> test
打包 ====> package
安装 ====> install
发布 ====> deploy
站点生命周期(知道有这个概念就好)

7.概念模型图

图片

8.Maven工程运行环境修改

<build>
	<plugins>
			<!-- maven构建Springboot -->
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
			<!-- tomcat7插件 -->
    	<plugin>
        	<groupId>org.apache.tomcat.maven</groupId>
        	<artifactId>tomcat7-maven-plugin</artifactId>
        	<version>2.2</version>
        	<configuration>
           <!--指定端口号-->
          		<port>8080</port>
        	</configuration>
     	</plugin>
		<!--jdk8插件 -->
    	<plugin>
     		 <groupId>org.apache.maven.plugins</groupId>
      		<artifactId>maven-compiler-plugin</artifactId>
      			<configuration>
       		 		<target>1.8</target>
        			<source>1.8</source>
        			<encoding>UTF-8</encoding>
      			</configuration>
    	</plugin>
	</plugins>
</build>

9.依赖范围

在这里插入图片描述

10.Maven的依赖传递、依赖冲突及解决办法

在这里插入图片描述
从图中可以看出,项目中直接依赖spring-mvc,而spring-mvc依赖了spring-aop、spring-beans等,最终结果就是项目中间接依赖了spring-aop、spring-beans等。这就是依赖的传递
如果项目A依赖项目B的版本1,项目C依赖项目B的版本2,如果在我们的项目中同时引入A和C,由于有依赖传递,项目B的版本1和版本2就会造成冲突,这就是依赖冲突
依赖冲突解决办法:
1、使用Maven提供的依赖调解原则

  • 第一声明者优先原则
    以先声明的为准,即在pom.xml文件中以上面的依赖为准。
  • 路径近者优先原则
    以spring-mvc为例,项目中引用此依赖,而spring-mvc依赖了spring-aop,如果直接在项目中引入spring-aop,则以直接引入的为准
    2、排除依赖
    使用exclusions标签将传递过来的依赖排除出去
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.1.6.RELEASE</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring-aop</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

3、版本锁定
采用直接锁定版本的方法确定依赖jar包的版本,版本锁定后不考虑依赖的声明顺序或依赖的路径,以锁定的版本为准添加到工程中。此方法在企业中经常使用
使用方式:
第一步:在dependencyManagement标签中锁定依赖的版本

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aop</artifactId>
				<version>5.1.6.RELEASE</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

第二步:在dependencies标签中声明需要导入的maven坐标

	 <dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
		</dependency>
	</dependencies>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值