Maven学习总结

本文深入解析Maven的核心概念,包括项目对象模型(POM)、生命周期、依赖管理和仓库机制。详细介绍了Maven命令,如mvn package、mvn clean等,以及如何配置本地和远程仓库,处理依赖传递和快照版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

趁着年末了,每年都会总结一些新知识的学习内容和旧技术的回顾。今天整理下Maven的一些应用知识。

1、Maven是基于POM的概念,POM:project object model,全称项目对象模型。Maven也是一种项目综合管理工具,提供处理编译、分配、文档、团队协作和其他概念的无缝连接。

2、Maven基于操作,编译,构建,单元测试,安装,网站生成。

3、Maven命令

mvn package:构建项目,web项目中,用来打包war包,在pom.xml配置packaging的值,这个代表的项目的打包类型,即作为项目的发布形式,其中打包类型有以下这么几种:

jar:默认类型,父模块必须要用pom来打包

war:这些打包web项目的war包

ejb、ear、rar、par

pom:多模块中的父模块必须要选择用pom来打包

<packaging>pom</packaging>

在父项目的pom.xml中,要用modules标签类声明子项目

<modules>

  <module></module>

  <module></module>

</modules>

mvn clean:清理项目

mvn test:执行单元测试

mvn install:打包项目成jar包,并发送到本地资源库

mvn site:生成项目文档站点,执行后会在项目target目录下,创建一个site目录。

mvn site-deploy:通过webDAV部署自动生成的文档到服务器

mvn tomcat:deploy   :这些以war文件形式部署到tomcat服务器

mvn eclipse:eclipse  :把maven项目转化为eclipse风格的项目,才能导入eclipse中

mvn package :会编译源代码,运行单元测试和包装,这取决于在pom.xml文件中的package标签,package=jar,将项目打包成jar包。package只是打包,和install不一样,package不发送到本地仓库。

eclipse中的Maven build是执行最近一次的命令,不要搞错了,若要执行compile命令,需在Goals栏输入compile。maven是没有mvn build命令的。

maven web项目clean再package后,打包成war包,war包中lib目录下,自动把依赖其他模块的jar也打包进来。

mvn install:install-file -Dfile=C:\kaptcha.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3 这个命令指定要安装的jar路径,gourpId,artifactId,version。这样kaptcha.jar就被安装到本地仓库了。pom.xml就可以这样引入kaptcha.jar包,

<dependency>

  <groupId>com.google.code</groupId>

  <artifactId>kaptcha</artifactId>

  <version>2.3</version>

</dependency>

mvn archetype:generate -DgroupId=com.yibai -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false   构建项目名为NumberGenerator的项目,maven-archetype-quickstart代表项目类型,若项目是web项目,则是maven-archetype-webapp,这个就是相当于eclipse构建maven项目用代码化构建。groupId是项目编号,artifactId是项目ID,version是项目版本。

archetype是一个插件,其任务就是按照模板来创建一个项目结构,使用quickstart原型插件创建一个简单的java应用程序。简单地说就是帮我们生成一个maven项目。

4、小结

配置本地仓库在conf/settings.xml文件中的localRepository标签中配置。

mirror相当于一个代理,它会拦截去远程repository下载构件的请求,然后从自己这里找出构件返回给客户端。

settings.xml中的mirrors中的mirror标签是配置镜像,不是分库,只有当前一个mirror无法连接的时候,才会去找下一个,这样镜像的功能就相当于备份和容灾。

mirror也不是接settings.xml中那样写的顺序来查询。所以里面的第一个并不是最上面的那个。当有id为A、B、C的顺序的mirror在mirrors节点中,maven会根据字母顺序来指定第一个,所以不管怎么排序,一定会找到A这个mirror来判断查找,当A无法连接,出现意外的情况下,才会去B查询。

<mirrorof></mirrorof>,匹配所有远程仓库,这样所有pom中定义仓库都不生效。

5、maven仓库类型

maven的仓库有三种:local-本地仓库、central-中央仓库、remote-远程仓库。

本地库就是在maven的配置文件settings.xml配置,当在本地库中没有找到依赖时,就会去中央仓库搜索,中央仓库是不用配置配置的,这个由maven社区管理,搜索时接入网络就可以了。

如果在中央仓库也找不到依赖,就可能要去开发高自定义的远程库中搜索jar包了。

以上就是maven依赖库的搜索顺序,本地---->中央----->远程---->若是还未找到,则会抛异常,就需要自行添加jar包了,就像eclipse的项目中手动添加依赖的jar包,也就是引入外部依赖。

maven的外部依赖

     <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
  • 外部依赖(JAR库的位置)可以在 pom.xml 中配置为与其他依赖的方式相同;

  • 指定 groupId 同样作为库的名称;

  • 指定 artifactId 同样作为库的名称

  • 指定范围的系统;

  • 指定相系统项目的位置;

6、Maven核心特征就是依赖管理

如上图,Root依赖A,B,C

D,E依赖Root

F依赖D、E

当我们建立F项目时,maven会发现所有依赖通过遍历依赖图和构建应用程序。这里也就是maven的依赖传递。

7、SNAPSHOT,maven快照。这是一个特殊版本,指出当前开发拷贝。不同于常规版本,maven每生成一个远程存储库都会检查新的快照版本。

我们在pom.xml文件中,经常会在引入jar的配置中标签<version>1.0-SNAPSHOT</version>,在版本中加入SNAPSHOT,这样Maven自动获取最新的快照版本。

8、maven生命周期

maven构建生命周期是由下列顺序的阶段:

准备阶段-》编译-》包装-》安装

准备阶段:资源复制,资源复制可以进行定制。

编译:执行编译,源代码编译,在此阶段完成。

包装:打包,创建JAR/WAR包,这个打包类型在pom文件中定义。

安装:这一阶段在本地/远程maven仓库安装程序应用包。

maven有三个标准的生命周期,clean,default(或build),site

maven执行mvn clean命令后,maven调用清洁的生命周期,由以下几个阶段组成:pre-clean,clean,post-clean。

网络的生命周期:maven的网络插件通常用于创建新的文档,创建报告,部署网站,阶段pre-site,site,post-site,site-deploy。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值