您的位置:首页 > 其它

Maven 基本概念

2017-01-31 14:43 169 查看

测试 Maven 安装配置是否正确

mvn -v


superpom

安装目录下 maven-model-builder-{version}.jar 内的 pom.xml

repository

local

.m2

remote

https://repo.maven.apache.org/maven2

settings.xml

settings.xml存在于两个地方:

1.安装的地方:$M2_HOME/conf/settings.xml

2.用户的目录:${user.home}/.m2/settings.xml

aliyun 镜像

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


一旦配置了镜像仓库,那么先前的所有配置都会转到镜像仓库中

修改本地仓库的位置:

D:/MyApps/maven/repo

Maven构建项目速度太慢的解决办法

https://maven.apache.org/archetype/archetype-models/archetype-catalog/archetype-catalog.html

maven 构建项目时会卡在
http://repo1.maven.org/maven2/archetype-catalog.xml


在构建时,在archetype:generate后加上 -DarchetypeCatalog=local参数

pom

pom.xml 项目描述、组织管理、依赖管理、构建信息的管理

project 包含pom的约束的信息

modelVerison是固定的版本,也是必须的元素,指定了当前pom的版本

坐标的信息

groupId:反写公司网址+项目名

artifactId:项目名-模块名,模块的一个标识

versionId:当前项目的版本号

packaging:默认是jar,也可以是war、zip、pom

name项目描述名

url项目地址

discription项目描述

developers开发列表,将开发人员的信息写上

licenses许可证信息

organization组织信息

dependencies依赖信息列表

dependency依赖信息

scope

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

compile

provided 例:servlet api

runtime 例:JDBC

test

system

import (only available in Maven 2.0.9 or later)

依赖传递、排除

<!-- maven02 -->
<dependency>
<groupId>vip.kassadin.maven</groupId>
<artifactId>maven01</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

<!-- maven03 -->
<dependency>
<artifactId>maven02</artifactId>
<groupId>vip.kassadin.maven</groupId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>vip.kassadin.maven</groupId>
<artifactId>maven01</artifactId>
</exclusion>
</exclusions>
</dependency>


依赖冲突

不同版本的构件

1.短路优先

2.先声明先优先

如果路径长度相同,则谁先声明,先解析谁

聚合、继承

聚合

Change the parent POMs packaging to the value “pom” .

Specify in the parent POM the directories of its modules (children POMs)

<!--aggregation-->
<modules>
<module>../maven01</module>
<module>../maven02</module>
<module>../maven03</module>
</modules>


继承

<parent>
<groupId>com.project</groupId>
<artifactId>project.parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>


dependencyManagement

在dependencyManagement中配置的元素既不会给parent引入依赖,也不会给它的子模块引入依赖,仅仅是它的配置是可继承的

pluginManagement

这个元素和相类似,它是用来进行插件管理的。

在我们项目开发的过程中,也会频繁的引入插件,所以解决这些复杂配置的方法就是使用插件管理

对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在

对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁

在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便。

参考:Maven详解之聚合与继承
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven