Maven基础理解(不含命令行)

一、介绍

随着组件的不断增加,项目越来越大,jar包的规模也越来越多。一个项目中有上百个jar包非常正常。框架中使用的jar包,不仅数量庞大,而且彼此之间存在错综复杂的依赖关系。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。如果要开发者自己一个个引入,那需要耗费很多时间,还可能会因为部分jar包遗漏或者版本不对,导致项目运行出错。此时Maven的作用就体现出来了。

(1)依赖管理:主要作用是用于添加jar包,可判断依赖关系自动导入相关jar包,以及获取第三方jar包;

(2)项目构建:可作为构建管理工具,生成可在服务器上运行的项目,并且可将项目拆分为多个工程模块。

Maven的工作机制如图:

Maven的核心程序在官网就有提供,只需要到官网下载,然后直接解压即可。

主要有三个配置是需要刚下载Maven进行配置的。一个是指定本地仓库:

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven-repository</localRepository>

另一个是要配置阿里云提供的镜像仓库。因为原本的配置是国外的网站,会导致下载和配置各种包速度很慢,需要配置国内的镜像源。

	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>

最后还需要配置Maven工程的基础JDK版本

	<profile>
	  <id>jdk-1.8</id>
	  <activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	  </activation>
	  <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	  </properties>
	</profile>

注意:如果使用IDEA进行开发,除了阿里云镜像仓库之外,其余两个配置是可以在IDEA中进行配置,省略在配置文件中进行撰写。

三、Maven构建过程的主要环节

1、清理:

  • 作用:删除之前的编译结果,为重新编译做准备
  • 效果:删除target目录

2、编译:

  • 作用:将 Java 源程序编译为字节码文件
  • 结果:主体程序编译结果存放的目录:target/classes;测试程序编译结果存放的目录:target/test-classes

3、测试:

  • 作用:针对项目中的关键点,使用提前准备好的测试程序进行测试,确保项目在迭代开发过程中关键点的正确性
  • 测试的报告存放的目录:target/surefire-reports

4、报告:

  • 作用:在每一次测试后以标准的格式记录和展示测试结果

5、打包:

  • 作用:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
  • 存放的目录:target

6、安装:

  • 作用:在 Maven 环境下特指将打包的结果——jar包或war包,和pom文件一起存入到本地仓库中
  • 注意:jar 包在 Maven 仓库中的路径是根据它的坐标生成的。

7、部署:

  • 作用:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行

构建过程的主要环节构成了Maven的生命周期:Clean、Slte、Default。这三个生命周期是彼此独立的。在任何一个生命周期内部,执行任何一个具体环节的操作,都是从本周期最初的位置开始执行,直到指定的地方。

四、其他内容

1、Maven核心概念:POM

POM:Project Object Model,即项目对象模型。其采用模型化思想,将工程抽象为一个模型,再用程序中的对象来描述这个模型。对应核心配置文件:pom.xml。

2、dependencies配置

scope:

  • 标签的可选值:compile/test/provided/system/runtime/import
  • (1)每种标签代表依赖的范围,主要用于表示是否能在main目录、test目录、开发过程、部署到服务器时生效;
  • (2)依赖具有传递性,即在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于B 依赖 C 时使用的依赖范围,例如B依赖C时是compile的,则可以传递的。
  • 绝大部分都是compile范围,全部时刻都有效

exclusions:

  • 配置依赖的排出,其中使用exclusion指定要排除的坐标,防止依赖冲突

3、继承

工程之间可以继承,可以在父工程中统一管理项目中的依赖信息,以此对大型项目的project进行module模块拆分。实际做法为:

(1)首先需要在父工程指定packaging为pom,然后modules中指定聚合配置

(2)子工程中需要指定父工程的坐标,可以在父工程中配置统一的依赖管理,子工程中再指定就可省略版本号;也可在父工程的properties中中声明自定义属性,之后使用${属性名}调用

4、结合IDEA的具体操作

每次创建 Project 后都需要设置 Maven 家目录位置,否则 IDEA 将使用内置的 Maven 核心程序(不稳定)并使用默认的本地仓库位置。这样一来,我们在命令行操作过程中已下载好的 jar 包就白下载了,默认的本地仓库通常在 C 盘,还影响系统运行。

配置之后,IDEA 会根据我们在这里指定的 Maven 家目录自动识别到我们在 settings.xml 配置文件中指定的本地仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值