Maven 简单介绍

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具。
核心概念:
坐标:
使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。
1. groupid:公司或组织的域名倒序+当前项目名称
2. artifactId:当前项目的模块名称
3. version:当前模块的版本

仓库:
1. 本地仓库:为当前本机电脑上的所有 Maven 工程服务。
2. 远程仓库
(1) 私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务。
(2) 中央仓库:架设在 Internet 上,为全世界所有 Maven 工程服务。
(3) 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。

仓库中的文件

  • maven 的插件
  • 我们自己开发的项目的模块
  • 第三方框架或工具的 jar 包

修改本地仓库
①默认本地仓库位置:~.m2\repository
②指定本地仓库位置的配置信息文件:apache-maven-3.2.2\conf\settings.xml
③在根标签settings下添加如下内容:[本地仓库路径]

生命周期
Maven 生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven 就可以自动化的执行构建命令了。
Maven 有三套相互独立的生命周期:
①Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
②Default Lifecycle 构建的核心部分,编译,测试,打包,安装,部署等等。
③Site Lifecycle 生成项目报告,站点,发布站点。
Default 生命周期是 Maven 生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。
运行任何一个阶段的时候,它前面的所有阶段都会被运行,例如我们运行 mvn install 的时候,代码会被编译,测试,打包。

构建过程的几个主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将 Java 源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
⑥安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

插件和目标:
Maven 的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
每个插件都能实现多个功能,每个功能就是一个插件目标。
Maven 的生命周期与插件目标相互绑定,以完成某个具体的构建任务

生命周期阶段插件目标插件
compilecompilemaven-compiler-plugin
test-compilecompilemaven-compiler-plugin

在 eclipse 中使用 maven方法:
Build Path是运行时环境 ,Compiler是编译时环境 ;
Maven插件的设置:
Installation 指定Maven核心程序的位置;User settings 指定 conf/setting.xml的位置;
设定window–>perspective–>customize perspective–> menu visibility --> file -->new 中找到Maven project 勾上即可在new时候显示 Maven Project;

依赖:
依赖的范围有几个可选值,我们用得到的是:compile、test、provided(不参与部署) ;
依赖的传递性:A依赖B,如果B依赖C的范围是compile,那么可以传递,否则不可以;
exclusions表示从依赖中排除这个jar;

<dependency>
<groupId>com.atguigu.maven</groupId>
 <artifactId>Hello</artifactId>
 <version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
 <exclusions>
 <exclusion>
 <groupId>commons-logging</groupId>
 <artifactId>commons-logging</artifactId>
 </exclusion>
 </exclusions> 
</dependency>

依赖原则:解决jar冲突;

  1. 路径最短者优先
  2. 路径相同者先声明的优先

统一管理版本号:

  1. 统一声明版本号
  2. 引用前面声明的版本号
<properties>
 <atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version>
</properties>
<dependencies>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>${atguigu.spring.version}</version>
 </dependency>
</dependencies>

继承:
由于非 compile 范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程需要独自配置,如 junit.jar ,所以各个模块工程中,很容易版本不一致。使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。
步骤:
创建一个Meven工程作为父工程,打包方式为pom;
在父工程中管理依赖

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

在子工程中引用父工程并指定需要的依赖(不需要范围和版本号);

<parent>
<groupId>com.atguigu.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 指定从当前子工程的pom.xml文件出发,查找父工程的pom.xml的路径 -->
<relativePath>../Parent/pom.xml</relativePath>
</parent>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

聚合:
将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。
在一个“总的聚合工程”中配置各个参与聚合的模块;(总的聚合工程可以随便选择)

	<!-- 配置聚合 -->
	<modules>
		<!-- 指定各个子工程的相对路径 -->
		<module>../HelloFriend</module>
		<module>../MakeFriends</module>
		<module>../Hello</module>
	</modules>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值