前言
- 本文仅仅是为了记录学习【maven实战】知识点以及相关拓展,所以有些知识点也仅仅是一笔带过,所以需要了解的朋友可以去阅读【maven实战】这本书。
依赖
依赖配置
- groupId,artifactId,version:依赖的基本坐标
- type:依赖类型,默认值Jar
- optional;标记依赖是否可选
- exclusions:用来排除传递性依赖
- scope:依赖范围
- 代码如下:
<project>
...
<dependencies>
<dependcy>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>...</type>
<scope>...</scope>
<optional>...</optional>
<exclusions>
<exclusion>...</exclusion>
...
</exclusions>
</dependcy>
</dependencies>
...
</project>
依赖范围【scope】
三种classpath
- 编译classpath
- 测试classpath
- 运行classpath
五种依赖范围
- compile:编译依赖范围。默认依赖范围。在三种classpath有效例如:【spring-core】
- test:测试依赖范围。只在test-classpath有效。例如【Junit】
- provided:已提供有效范围。在编译,测试classpath有效。例如:【servlet-api】-运行时,容器已经提供。
- runtime:运行时依赖范围。测试,运行classpath有效。例如【JDBC驱动实现】
- system:系统依赖范围。在编译,测试classpath有效。使用时,需通过systemPath元素显试地指定依赖文件路径,由于不是maven仓库解析,与本机绑定,可能造成构建的不可移植。
- import:导入依赖范围。不会对三种classpath产生实际的影响。
- 查看已解析依赖
mvn dependency:list
- 查看依赖树
mvn dependency:tree
- 解析依赖
mvn dependency:analyze
仓库
-
私仓
-
节省自己的外网带宽
-
加速maven构建
-
部署第三方构建
-
提高稳定性,增强控制
-
降低中央仓库的负荷
-
发布版本
-
用来保存稳定的发行版本
-
快照版本
-
快照仓库用于保存开发过程中的不稳定版本
镜像
- 如果仓库X可以提供仓库Y的存储的所有内容,那么可以认为X是Y的一个镜像。
<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Internal Respository Manager</name>
<url>http://192.168.1.1/maven2</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>
该配置表示是所有的Maven仓库的镜像,任何对远程仓库的请求都会被转发【http://192.168.1.1/maven2】。如果该镜像仓库需要认证,则配置一个id为【internal-repository】的server即可,如下:
<server>
<id>deploymentRepo_releases</id>
<username>repouser</username>
<password>repopwd</password>
</server>
- 1.<mirrorOf>*</mirrorOf> 匹配所有远程仓库。
- 2.<mirrorOf>external:*</mirrorOf> 匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
- 3.<mirrorOf>repo1,repo2</mirrorOf> 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
- 4.<mirrorOf>*,!repo1</miiroOf> 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除
仓库和镜像的概念
- repository是统一存放所有maven项目共享的构件的位置。
- mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。mirror本身并不是repository,它只是起到远程repository的网络加速器的作用
maven仓库镜像站
1.阿里云的镜像站
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.maven官方运维的2号仓库
<mirror>
<id>repo2</id>
<name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3-maven在UK架设的仓库(有时候速度会比官方2号仓库快)
<mirror>
<id>ui</id>
<name>Mirror from UK</name>
<url>http://uk.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
4.JBoss的仓库
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
仓库搜索服务
- 1, Sonatype Nexus
- http://repository.sonatype.org/
- 2, Jarvana
- http://www.jarvana.com/
- 3, MVNbrowser
- http://www.mvnbrowser.com
- 4, MVNrepository
- http://mvnrepository.com/