最近系统的学习了maven的一些知识,有一些自己的笔记和理解,留在csdn供各位爷点评。
1. 首先分享一下下载依赖dependency的官方网址:https://mvnrepository.com
根据自己的需要,选择版本,引入到pom.xml文件即可
2. 主要标签及意义
pom.xml 主要组成:
<group-Id>反域名</>
<artifactId>功能</>
<version>版本</>
<packaging>pom/jar(默认)/war/maven-plugin</>
<description>版权声明</>
<properties>定义变量</ > {project_version}:内置参数
<dependencecyManagement>1)只出现在父pom 2)统一版本号 3)声明式(子pom中用到再引)
<dependency></>
<scope>默认是compile,还有test,provided,runtime,system
有一个非常实用的命令可以打印依赖文本到项目下,可以清晰的看到依赖关系。
打印依赖文本:mvn dependency:tree>d.txt。jar包之间的依赖一目了然。
3. 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。比如现在比较火的springboot,默认的静态资源路径和结构,还有因为约定才减少了很多的spring配置文件的配置。而maven又有哪些约定呢?下面是我的一些笔记:
1)版本约定。maven用于管理web项目的依赖,那版本就是这个圈子的最外沿。一般我们开发提供的版本普遍分为SNAPSHORT和release版本。SNAPSHORT为测试版本,不够稳定,release一般为发布版的稳定版本。
2)超级pom。任何一个Maven项目都隐式的继承自超级POM,这有点类似于任何一个Java类都隐式的继承于Object类。因此,大量超级POM的配置都会被所有Maven项目继承,这些配置也就成为了Maven所提倡的约定。对于Maven 3,超级POM在文件 $ MAVEN_HOME/lib/maven-model-builder-x.x.x.jar中的org/apache/maven/model/pom-4.0.0.xml路径下。对于Maven2,超级POM在文件$ MAVEN_HOME/lib/maven-x.x.x-uber.jar中的org/apache/maven/project/pom-4.0.0.xml目录下。这里的x.x.x表示Maven的具体版本。
4. scope标签
compile:默认值,适用于所有阶段(表明该jar包在编译、运行以及测试中路径后可见),并且会随着项目直接发布。
provided:编译和测试时有效,并且该jar包在运行时由服务器提供。如servlet-api.
runtime:运行时使用,对测试和运行有效。如jdbc.
test:只在测试时使用,在编译和运行时不起作用。发布项目时没有作用。
system:不依赖maven仓库解析,需要提供依赖的显式的置顶jar包路径。对项目的移植来说是不方便的。
这个本人觉得挺实用的,可以去看看自己项目中的标签是否可以优化,比如不必再运行时使用的jar可以改为test。
5. 私服
现在公司一般都有数个产品线并行,为统一管理和后续项目统筹对接,一般都会注册自己的私服,将第三方jar放到私服。
<repositories> <repository> <id>thirdpart</id> <url>私服地址url</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>
先写这么多,总之maven是进阶路上和项目管理必不可少的一个节点,不管是项目管理,架构方向还是项目运维,都需要熟练掌握。
此致,敬礼!