1 基本要点

1 第3章 Maven使用入门
1.1 pom.xml结构/配置

见附录A

1.2 settings.xml结构/配置

见附录B

1.3 其他:

遇到错误:(请使用 -source 5 或更高版本以启用静态导入声明)

maven的核心compiler插件默认只支持编译Java 1.3,因此需要配置该插件使其支持1.5,加上plugin:

<!--<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>

2 第5章 坐标
2.1 maven坐标:
  • groupId 必须定义
  • artifactId 必须定义
  • version 必须定义
  • packaging 可选;打包方式,jar还是war,默认是jar
  • classifier 不能直接定义;定义附属构件;
2.2 maven test: junit

发送邮件Demo:test_maven.tar.gz,通过mvn clean test测试执行

3 第5章 maven依赖:
3.1 scope种类:
  • compile
  • test
  • provided
  • runtime
  • system
  • import  不会对实际的classpath产生影响,用于dependencyManagement中
3.2 scope与classpath关系 
Scope 编译有效 测试有效 运行时有效 例子
compile Y Y Y spring-core
test   Y   junit
provided Y Y   servlet-api
runtime   Y Y JDBC
system Y Y   本地Maven库外的类库文件
3.3 依赖传递
  compile test provided runtime
compile compile     runtime
test test      
provided provided   provided provided
runtime runtime     runtime

注:左侧第一列是A,上面第一行是B,A依赖B

3.4 冲突调解法则
  • 第一法则:路径最近者优先
  • 第二法则:第一声明者优先
4 第6章 仓库
4.1 分类:
  • 本地仓库
  • 远程仓库
    • 中央仓库
    • 私服
    • 其他项目公共库
4.2 settings.xml配置

......

4.3 依赖解析机制
  • A scope是system时,直接从本地文件系统加载;若不是转B;
  • B 根据坐标,从本地库寻找;若未找到转C;
  • C 若依赖的版本是显式发布的本版构件,则遍历所有远程仓库下载之;否则,转D;
  • D 无论依赖RELEASE/LATEST还是SNAPSHOT,则读取远程/groupId/artifactId/maven-metadata.xml,将其与本地仓库对应元数据maven-metadata-local.xml合并,得到最新版本从本地/远程下载之;转E;
  • E 对于SNAPSHOT版本而言,如果得到了时间戳格式的,则转为SNAPSHOT格式的名字作为构件名字。

注:我的理解,书上讲的没有彻底看明白

5 第7章 生命周期与插件
5.1 clean周期
阶段 描述 插件目标 描述
pre-clean      
clean   maven-clean-plugin:clean  
post-clean      
5.2 default周期
阶段 描述 插件目标 描述
validate      
intialize      
generate-sources      
process-sources      
generate-resources      
process-resources   maven-resources-plugin:resources 复制..到主输出目录
compile   maven-compile-plugin:compile 编译..到主输出目录
process-classes      
generate-test-sources      
process-test-sources      
generate-test-resources      
process-test-resources   maven-resources-plugin:testResources 复制..到主输出目录
test-compile   maven-compile-plugin:testCompile 编译..到主输出目录
process-test-classes      
test   maven-surefire-plugin:test  
prepare-package      
package   maven-jar-plugin:jar  
pre-integration-test      
integration-test      
post-integration-test      
verify      
install   maven-install-plugin:install  
deploy   maven-deploy-plugin:deploy  
5.3 site周期
阶段 描述 插件目标 描述
pre-site      
site   maven-site-plugin:site   
post-site      
site-deploy   maven-site-plugin:deploy  
5.4 自定义绑定

plugin节点内嵌execution节点,可以配置执行一个任务

5.5 常用插件
名称 描述
maven-archetype-plugin 构建项目
maven-clean-plugin 清理
maven-compiler-plugin 编译
maven-deploy-plugin 部署
maven-install-plugin 安装
maven-resources-plugin 处理资源
maven-site-plugin 生成站点
maven-surefire-plugin 测试
maven-surefire-report-plugin 生成单元测试报告
maven-jar-plugin 打jar
maven-war-plugin 打war
maven-shade-plugin  
   
maven-changelog-plugin 生成版本变更报告
maven-checkstyle-plugin 生成CheckStyle报告
maven-javadoc-plugin 生成JavaDoc文档
maven-jxr-plugin 生成源码交叉引用文档
maven-pmd-plugin 生成PMD报告
maven-project-info-reports-plugin 生成项目信息报告
   
maven-antrun-plugin 调用ant
maven-assembly-plugin 构建自定义格式分发包
maven-dependency-plugin 依赖分析
maven-enforcer-plugin 定义强制遵守规则
maven-pap-plugin 生成PGP签名
maven-help-plugin 获取信息
maven-invoker-plugin 自动运行项目并验证
maven-release-plugin 自动化版本发布
maven-scm-plugin 集成版本控制系统
maven-source-plugin 生成源码包
maven-eclipse-plugin 生成Eclipse项目
build-helper-maven-plugin 包含各种生命周期的目标
exec-maven-plugin 运行系统/Java程序
maven-license-plugin 获取许可证
versions-maven-plugin 批量更新POM版本
properties-maven-plugin 读取properties文件
   
jboss-maven-plugin 管理jboss
sql-maven-plugin 管理sql
tomcat-maven-plugin 管理tomcat
cargo-maven-plugin 管理各类Web容器
jetty-maven-plugin 管理jetty容器
maven-gae-plugin 管理GoogleAppEngine
maven-android-plugin 构建Android项目

注:标蓝的是用过的

 

5.6 插件解析
  • A pluginRepositories节点配置插件仓库
  • B 解析插件的groupId  artifactId  version
  • C 解析插件前缀
5.7 插件目标

列出插件目标命令:  mvn help:describe -Dplugin=eclipse

6 项目集成:聚合与集成
1 两者关系:
  • 聚合是为了快速构建多个模块项目;集成是为了避免重复
  • 它们的packaing都是pom类型
  • 一个POM有可能既是聚合,又是父POM供继承
2 Maven核心理念:

Convention Over Configuration 约定优于配置

可以自定义约定,比如<build><sourceDirectory>src/java</sourceDirectory></build>

3 反应堆 Reactor

指的是所有模块组成的一个构建结构

反应堆的构建顺序,不一定是<module>节点的声明顺序

反应堆裁剪是为了有选择的构建某些模块,总不能动不动就构建所有模块吧。反应堆裁剪命令:

  • -am 同时构建所列模块的依赖模块
  • -amd 同时构建依赖于所列模块的模块
  • -pl  构建指定的模块,模块间逗号隔开
  • -rf  从指定的模块回复反应堆
7 Maven系统属性

参考:http://www.imxylz.info/wiki/Java/MavenProperties

类别 属性 说明

 

 

 

 

 

project.*

引用POM中定义的字段

project.groupId  
project.version  
project.artifactId  
project.name  
project.description  
project.build.sourceDirectory 源代码目录, 默认src/main/java
project.build.scriptSourceDirectory 脚本源代码目录, 默认src/main/scripts
project.build.testSourceDirectory 测试源代码目录, 默认src/test/java
project.build.outputDirectory 输出目录,默认target/classes
project.build.testOutputDirectory 输出目录,默认target/test-classes
project.build.directory 输出目录,默认target/
project.baseUri 完整的项目目录路径
project.basedir 完整的项目目录路径

settings.*

引用settings.xml中定义的变量

settings.localRepository 本地仓库路径

 

env.*

引用环境变量

env.HOME 当前用户主目录
env.PATH 系统执行路径
env.JAVA_HOME  
env.M2_HOME Maven2的安装路径









系统属性

引用System.getProperty()中的属性

java.version

Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home Java installation directory
   
java.vm.specification.version Java Virtual Machine specification version
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.name Java Virtual Machine specification name
java.vm.version Virtual Machine implementation version
java.vm.vendor Java Virtual Machine implementation vendor
java.vm.name Java Virtual Machine implementation name
   
java.specification.version Java Runtime Environment specification version
java.specification.vendor Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version Java class format version number
   
java.class.path Java class path
java.ext.dirs Path of extension directory or directories
   
os.name Operating system name
os.arch Operating system architecture
os.version Operating system version

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值