Maven实战学习笔记1

来源:互联网 发布:ios工具类软件 知乎 编辑:程序博客网 时间:2024/04/19 07:30

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为安装的JDKm2eclipse需要使用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中的坐标:使用groupIdartifactIdversionpackagingclassifier唯一描述一个构件。

2.坐标详解:

a) groupId:定义项目隶属的实际项目(组),一般为公司网址反向。

b) artifactId:定义一个项目(模块)。名称作为生成构件的前缀,后跟实际项目groupId和版本。

c) Version:定义项目所处的版本。

d) Packaging:项目的打包方式,默认为jar

e) Classifier:帮助定义构建输出一些附属构件,javadoc.jarsources.jar

3.依赖:

a) groupIdartifactIdversion定义坐标描述构件。

b) type:定义依赖类型。

c) Scope:定义依赖的范围,分别针对三种classpathtestcompilerun,有如下分类:test:测试,compile:编译,provided(编译、测试有效,运行无效),runtime:运行时有效,system:类似provided但是需要使用systemPath显式指定依赖文件路径,import:不会对三种classpath产生影响。默认为compile范围。

d) Optional:标记依赖是否可选。

e) Exclusions:用于排出传递依赖性。

4.Maven依赖调解使用的是路径最近者优先:A->B->C->X1.0A->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表示该镜像是远程服务器中的中央服务器。

 

原创粉丝点击