Maven 基本概念
2017-01-31 14:43
169 查看
测试 Maven 安装配置是否正确
mvn -v
superpom
安装目录下 maven-model-builder-{version}.jar 内的 pom.xmlrepository
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.htmlmaven 构建项目时会卡在
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.htmlcompile
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基本概念
- MAVEN 基本的一些概念 (笔记—补充中。。。。。)
- maven基本概念
- Maven的基本概念(1)
- 开发自己的Maven插件之四:基本概念
- maven第一天——入门与基本概念
- Maven初识(二)——基本概念
- Maven基本概念
- MAVEN 基本的一些概念 (笔记—补充中。。。。。)
- Maven学习总结:基本概念
- Maven基本概念
- Maven的基本概念+入门程序
- [Maven]Maven中的一些基本概念
- 【Maven入门教程】Maven的基本概念
- Maven入门:Maven的基本概念
- maven基本概念
- (三)Maven基本概念——常用插件的配置
- Maven基本概念与安装