博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven学习总结
阅读量:6332 次
发布时间:2019-06-22

本文共 6061 字,大约阅读时间需要 20 分钟。

1、定义;maven是apache软件基金会下的一款自动化构建工具,专注于服务Java平台上的项目构建和依赖管理。

2、Maven会先搜索本地仓库(repository),发现本地没有然后从远程仓库(中央仓库)获取。但中央仓库只有一个,最好从其镜象处下载。国内用阿里云下的服务器。

 
   

也有通过nexus搭建的私服进行获取的(具体参考nexus的创建和连接)。

3、约定的目录结构

maven有三种打包方式:

jar:普通的jar项目

war:创建一个web项目

POM:

创建一个pom文件,管控版本号,其它的maven工程继承后就可以统一控制版本了,如下:

统一的依赖

4.12
4.1.3.RELEASE
3.2.7
1.2.2
junit
junit
${junit.version}
test
org.springframework
spring-context
${spring.version}
org.springframework
spring-beans
${spring.version}

依赖

com.lamsey
lamsey-parent
0.0.1-SNAPSHOT
lamsey-common

 

 

4、依赖:maven解析下述信息时会到本地仓库中根据坐标查找

①依赖信息的配置
com.atguigu.maven
Hello
0.0.1-SNAPSHOT
compile
坐标: 
:文件发行者信息的倒写
   
:模块名字
  
:版本信息
SNAPSHOT:快照
RELEASE:正式版
范围:
:依赖的范围,参数有以下三个 [compile][test][provide]

依赖的进阶:

(1)依赖的传递性:
在依赖的链条上,被依赖的工程如果依赖其他工程,那么链条中上面的工程就不必重复声明依赖了,Maven会自动导入。
(2)依赖传递的限制性 compile范围的引入可以传递 test、provide范围的引入不可传递
对于不可传递的依赖只能在有需要的工程模块中单独引入
(3)依赖传递性的排除 (4)声明属性值 (5)依赖的原则

4、生命周期&&插件

(1)maven中有三个独立的生命周期

[1]Clean:清理
[2]Site:生成站点
[3]Default:默认

 (2)每个生命周期都有这个特点:

不管用户要求执行的命令对应生命周期中的哪一个阶段,Maven都会自动从当前生命周期的最初位置开始执行,直到完成用户下达的指令

以下生命周期&&插件的内容来源:http://www.cnblogs.com/luotaoyeah/p/3819001.html

一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin。用户也可自行配置或编写插件。

4.1 . 三套生命周期

 clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。

4.1.1clean生命周期

  1. pre-clean    :执行清理前的工作;
  2. clean    :清理上一次构建生成的所有文件;
  3. post-clean    :执行清理后的工作

4.1.2default生命周期

default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。

  1. validate
  2. initialize
  3. generate-sources
  4. process-sources
  5. generate-resources
  6. process-resources    :复制和处理资源文件到target目录,准备打包;
  7. compile    :编译项目的源代码;
  8. process-classes
  9. generate-test-sources
  10. process-test-sources
  11. generate-test-resources
  12. process-test-resources
  13. test-compile    :编译测试源代码;
  14. process-test-classes
  15. test    :运行测试代码;
  16. prepare-package
  17. package    :打包成jar或者war或者其他格式的分发包;
  18. pre-integration-test
  19. integration-test
  20. post-integration-test
  21. verify
  22. install    :将打好的包安装到本地仓库,供其他项目使用;
  23. deploy    :将打好的包安装到远程仓库,供其他项目使用;

4.1.3site生命周期

  1. pre-site
  2. site    :生成项目的站点文档;
  3. post-site
  4. site-deploy    :发布生成的站点文档

4.2Maven的插件

Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件:

Maven官网上有更详细的官方插件列表:

 

4.2.1 插件的目标(Plugin Goals)

一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。如执行mvn install命令时,调用的插件和执行的插件目标如下:

每个插件都有哪些个目标,官方文档有更详细的说明::http://maven.apache.org/plugins/index.html

4.2.2将插件绑定到生命周期

Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译:

4.2.3 内置的绑定

Maven对一些生命周期的阶段(phase)默认绑定了插件目标,因为不同的项目有jar、war、pom等不同的打包方式,因此对应的有不同的绑定关系,其中

针对default生命周期的jar包打包方式的绑定关系如下:

 

第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式

http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html

 

 

 

clean tomcat7:run

 4.2.3自定义绑定

 

用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包,生成如:ehcache-core-2.5.0-sources.jar形式的源码包。

org.apache.maven.plugins
maven-source-plugin
2.2.1
attach-source
package
jar-no-fork
……

4.2.4 配置插件

Maven插件高度易扩展,可以方便的进行自定义配置。如:配置maven-compiler-plugin插件编译源代码的JDK版本为1.7:

org.apache.maven.plugins
maven-compiler-plugin
1.7
1.7

也可以对插件的各个目标进行更具体的配置。

http://maven.apache.org/guides/mini/guide-configuring-plugins.html

4.2.5插件仓库

跟其他构件一样,插件也是根据坐标存储在Maven仓库中。超级POM中Maven配置的默认插件远程仓库如下:

central
Central Repository
http://repo.maven.apache.org/maven2
default
false
never

 

 

 

5、继承(不熟)

上一级的maven依赖能被这一级使用

 

 

6、连接私服

私服地址

http://localhost:8081/nexus
默认账号
账号名:admin
密码:admin123

修改maven的配置文件

central
central-mirror
http://127.0.0.1:8081/nexus/content/repositories/com.lamsey.com/

 

7、聚合

:一个项目中的多个工程想要安装到仓库中时,只能一个一个手动安装,比较繁琐,配置聚合之后就能够实现一键安装

com.lamsey
lamsey-parent
0.0.1-SNAPSHOT
lamsey-manager
pom
lamsey-manager-pojo
lamsey-manager-mapper
lamsey-manager-interface
lamsey-manager-service

 

 聚合的效果图如下:

 

转载于:https://www.cnblogs.com/limingxian537423/p/7158395.html

你可能感兴趣的文章
【HDOJ 3652】B-number
查看>>
android代码混淆笔记
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
查看>>
BMP文件的读取与显示
查看>>
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>
Highcharts X轴纵向显示
查看>>
windows 注册表讲解
查看>>
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
【原】东拼西凑PBR(1):PBR基础
查看>>
react 从零开始搭建开发环境
查看>>
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>