Maven仓库
Maven仓库用来存储构件,maven项目不需要各自存储构件,需要时从仓库中获取
本地仓库
- Maven优先从本地仓库中查找构件坐标
本地仓库的路径:conf/setting.xml 中加入如下配置:
<settings> <localRepository>E:\SDE\maven\m2\repository\</localRepository> </settings>
- mvn clean install :把当前项目安装到本地仓库
远程仓库
中央仓库
- Maven默认的远程仓库,大部分流行的开源java构件存放于此
在超级POM中有如下定义,所有maven的pom.xml都会继承超级pom,因此中央仓库是所有maven项目的默认远程仓库
<repositories> <repository> <id>central</id> <name>Maven Repository Switchboard</name> <url>http://repo1.maven.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
私服仓库
- 局域网内建立的远程仓库
- 避免internet的影响
- 提高稳定性,可以自己管理(nexus)
- 降低对中央仓库的频繁访问
- 部署第三方构件,中央仓库中因为版权问题无法部署的构件
- 在项目的pom.xml中添加以下配置,可以声明多个私有的repository
updatePolicy表示检查更新的策略:daily / always / interval:X / never
<project> ...... <repositories> <repository> <id>private_remote_repo</id> <name>private remote maven repo</name> <url>http://mavenrepo.rexluo.com</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </release> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
远程仓库的认证
出于安全考虑,有些远程仓库需要认证信息才能访问
在maven的setting.xml中配置远程仓库认证信息,其中id需要对应项目pom.xml中配置的远程仓库的id
<settings> ...... <servers> <server> <id>private_remote_repo</id> <username>repo-user</username> <password>repo-pwd</password> </server> </servers> </settings>
部署构件到远程仓库
- 私服的重要作用就是部署第三方构件
在项目的pom.xml中加入以下配置,其中repository是release版本的repo,snapshotRepository是snapshot版本的repo
<project> ...... <distributionManagement> <repository> <id>private_remote_repo</id> <name>Private Remote Repo</name> <url>http://mavenrepo.rexluo.com</url> </repository> <snapshotRepository> <id>private_remote_snapshot_repo</id> <name>Private Remote Snapshot Repo</name> <url>http://mavensnapshotrepo.rexluo.com</url> </snapshotRepository> </distributionManagement> </project>
mvn clean deploy : 把项目部署到远程仓库中
maven-metadata.xml
- 如果项目中的依赖构件的版本设置为LATEST或者RELEASE,maven通过maven-metadata.xml文件计算得出每个依赖构件的LATEST和RELEASE的值,然后下载相应的构件
- 路径为groupId/artifactId/maven-metadata.xml
- 其中会列出依赖构件的所有release版本和最新的更新时间等信息
- 其中会列出依赖构件的所有snapshot版本的时间搓和构件号
镜像
可以通过配置setting.xml来创建远程仓库在私服上或者局域网中的镜像:
<setting> ...... <mirrors> <mirror> <id>internal-repository</id> <name>Internal Repository Manager</name> <url>http://192.168.1.100/maven2/</url> <mirrorOf>*</mirrorOf> </mirror> <mirrors> </setting>
mirrorOf的取值:
mirrorOf 取值 匹配对象 * 匹配所有远程仓库 external: * 匹配所有远程仓库,使用localhost,file://除外 repo1, repo2 匹配多个远程仓库,逗号分隔 *, !repo1 匹配所有远程仓库,repo1除外