Maven使用

  • 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(依赖范围)有六种:

  1. compile: 默认的范围,编译测试运行都有效
  2. provided:在编译和测试时有效,在运行时该dependency不会有效
  3. runtime:在测试和运行的时候有效,例子:jdbc的驱动,在测试运行时有效,编译时无效
  4. test:只在测试时有效,例子:junit
  5. system:与本地系统向关联,可移植性差,和provided类似
  6. import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置

依赖有两个原则

1.短路优先
A->B->C->X
A->D->X (优先)

  1. 先声明的优先
    如果路径相同长度相同,则谁先声明,先解析谁。
    【C依赖A和B,A和B都包含同一个不同版本的Jar,谁依赖在前取谁的依赖版本。】

​# 聚合和继承
pom.xml的modules中,加入三个module,


image.png

在aggreation中,会build三个module


image.png

在parent项目中,可以在dependencyManagement中添加统一的junit version
image.png

bge 的pom中也要加入parent标签,让bge从parent中继承junit
image.png

http://www.imooc.com/learn/443
https://github.com/Tiakon/maven-learning-notes

你可能感兴趣的:(Maven使用)