- Maven的常用命令
src
-main
-java
-package
-test
-java
-package
resources
mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 添加jar包到本地仓库中
// 创建目录的两种方式:
archetype: generate 按照提示进行选择
archetype: generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
坐标
构件
仓库
本地仓库 修改地址:在settings.xml中修改一行local repo的储存地址 .m2文件夹的地址
远程仓库
镜像仓库
pom.xml中的常用标签
project: 根元素,包含约束信息
modelVersion: 指定当前pom的版本
坐标信息:
groupId: 反写的公司网址+项目名
artifactId: 项目名+模块名
version: 版本号(0.0.1snapshot,大版本0+分支号0+小版本1)
packageing: 打包方式,默认是jar,还有war、zip 、pom等
name:项目描述名,项目文档中使用
url:项目地址
description: 项目面试
developers:开发人员列表
licenses:许可证信息
origanization:开发组织信息
dependencies:依赖列表中有很多dependency,dependency可以有groupId, artifactId, version, type, scope(依赖范围),optional(设置依赖是否可选,默认为false,默认是必须选),exclusion(排除)
dependency management: 依赖列表,不会实际运行,用在父类模块中
build:plugins插件列表,可以包含多个插件,插件也是有groupId artifactId version的
modules:可以指定多个模块,一起定义
scope(依赖范围)有六种:
- compile: 默认的范围,编译测试运行都有效
- provided:在编译和测试时有效,在运行时该dependency不会有效
- runtime:在测试和运行的时候有效,例子:jdbc的驱动,在测试运行时有效,编译时无效
- test:只在测试时有效,例子:junit
- system:与本地系统向关联,可移植性差,和provided类似
- import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
依赖有两个原则
1.短路优先
A->B->C->X
A->D->X (优先)
- 先声明的优先
如果路径相同长度相同,则谁先声明,先解析谁。
【C依赖A和B,A和B都包含同一个不同版本的Jar,谁依赖在前取谁的依赖版本。】
# 聚合和继承
pom.xml的modules中,加入三个module,
在aggreation中,会build三个module
在parent项目中,可以在dependencyManagement中添加统一的junit version
bge 的pom中也要加入parent标签,让bge从parent中继承junit
http://www.imooc.com/learn/443
https://github.com/Tiakon/maven-learning-notes