Maven实战
Chap 01 Maven简介
1.Maven是跨平台的构建、项目管理、依赖管理工具。
Chap 02 Maven的安装和配置
1.Windows安装:
a) 下载压缩包后,配置环境变量M2_HOME,并在path环境变量中添加%M2_HOME%\bin;可以使用如下命令检测:
mvn -v |
b) 安装目录分析:
i. bin:运行脚本
ii. boot:包含的plexus-classworlds是一个类加载器框架。
iii. conf:配置文件,如settings.xml。
iv. lib:运行时需要的Java类库。
c) 默认仓库位置为用户目录下的.m2目录,即:~/.m2。可以在settings.xml中进行配置:
<localRepository>D:\Development\Repository</localRepository> |
d) 使用ping repol.maven.com检查是否能连接中央仓库。连接不上可以在settings.xml中配置使用国内的镜像:
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> |
使用mvn help:system命令会自动下载依赖,进而检查镜像配置的正确性。
e) 可在settings.xml中的proxies标签下配置代理。
f) Eclipse下的maven插件为m2eclipse。通常不使用内置的maven插件,并需要修改eclipse默认运行的环境:JRE为安装的JDK(m2eclipse需要使用JDK)。
g) MAVEN_OPTS环境变量用于设置运行时的JVM大小,例如设置为:
-Xms128m -Xmx512m
安装路径下的settings.xml(%M2_HOME%/conf/settings.xml)控制所有用户,一般会拷贝一份放到当前用户目录下~/.m2/settings.xml,仅对当前用户有效。
PS:用户目录下的配置会安装目录下的配置进行合并。
Chap 03 Maven使用入门
1.配置文件:pom.xml
2.项目坐标:groupId项目组,一般为公司网址反向;artifactId项目模块名,version项目版本。
3.默认主代码位置:src/main/java,通过命令mvn clean compile进行清理并编译。
4.默认测试代码位置:src/test/java,编译后通过mvn clean test进行清理并执行。
5.使用mvn clean package进行打包,mvn clean install安装到本地库,方便其他项目使用。
6.使用mvn-shade-plugin插件打包程序为可执行程序。
7.使用mvn archetype:generate勾勒项目骨架。
PS:运行main的一种方法:mvn exec:java -Dexec.mainClass="com.conan.MainClass"
Chap 04 背景案例
略
Chap 05 坐标和依赖
1.Maven中的坐标:使用groupId、artifactId、version、packaging、classifier唯一描述一个构件。
2.坐标详解:
a) groupId:定义项目隶属的实际项目(组),一般为公司网址反向。
b) artifactId:定义一个项目(模块)。名称作为生成构件的前缀,后跟实际项目groupId和版本。
c) Version:定义项目所处的版本。
d) Packaging:项目的打包方式,默认为jar。
e) Classifier:帮助定义构建输出一些附属构件,javadoc.jar和sources.jar。
3.依赖:
a) groupId、artifactId和version定义坐标描述构件。
b) type:定义依赖类型。
c) Scope:定义依赖的范围,分别针对三种classpath:test、compile、run,有如下分类:test:测试,compile:编译,provided(编译、测试有效,运行无效),runtime:运行时有效,system:类似provided但是需要使用systemPath显式指定依赖文件路径,import:不会对三种classpath产生影响。默认为compile范围。
d) Optional:标记依赖是否可选。
e) Exclusions:用于排出传递依赖性。
4.Maven依赖调解使用的是路径最近者优先:A->B->C->X1.0,A->D->X2.0。这样会使用X2.0。对于路径长度一样的采用第一声明优先(pom中依赖声明的顺序)。
5.传递性依赖:非直接引用的依赖。
5.可选依赖适应于项目可以使用多个特性,但是同时只能使用一个特性,如项目是一个数据库接口,支持多种数据库,在构建这个项目是,需要使用的数据库驱动可以有多种,但是同时只能使用一种。
6.使用exclusions元素排出传递性依赖,防止依赖不稳定的版本。
7.使用properties元素定义属性,然后通过${}引用。
8.使用mvn dependency:list列出所有已解析的依赖,mvn dependency:analyze分析依赖。
Chap 06 仓库
1.Maven仓库分为本地仓库和远程仓库(中央仓库central、私服和其他公共库)。
2.使用repository标签配置远程服务器,如需认证,使用server标签配置用户名和密码。
3.使用distributionManagement标签能够将生成的构件部署到远程仓库,命令为mvn clean deploy。
4.含有snapshot的快照版本,解析时会自动下载最新的版本。
5.配置远程服务器将接管本地找不到后使用的中央服务器。
6.镜像提供了一种动态访问远程仓库的机制,使用不同的网络可以自动使用可以访问的镜像,不用每次变更网络就修改配置。使用mirror配置镜像,mirrorOf值配置为central表示该镜像是远程服务器中的中央服务器。