《Maven实战》学习总结(四)——仓库

来源:互联网 发布:java方法中的作用 编辑:程序博客网 时间:2024/04/27 23:36

       上篇文章我们介绍了Maven构件的逻辑表现形式--坐标和依赖,本篇文章将介绍Maven中构件的物理表示方式——仓库。在Maven出现之前,我们各个项目下一般都会有一个lib文件夹,里面存放项目依赖的所有构件,那么问题来了,各个项目中都有依赖相同的构件,这些完全相同的重复的构件分散在不同的项目里,占据着磁盘空间,难于管理。在坐标机制的基础上,Maven可以将各个项目共享的构件统一存储,这个统一的位置就是仓库。

       构件的存储路径与Maven坐标的对应关系为:groupId/artifactId/version/artifactId-version.packaging。Maven仓库是基于简单文件系统存储的,以此我们在遇到问题时可以很方便的查找到相关文件,定位问题。

仓库构件来源:1.从远程仓库下载  2.clean install对项目进行构建并输出至仓库


Maven仓库的分类

1.本地:

         默认本地仓库路径 -- 用户目录/.m2/repository

         修改路径配置

        <settings>

                <localRepository>D:\java\repository\</localRepository>

         </settings>

2.远程(中央仓库/私服/其他公共库)

        Maven在查找构件时,先判断本地仓库是否存在,存在则返回,如不存在,则会去远程仓库查找,找到则加载到本地仓库,然后使用,本地/远程都没有找到则会报错。具体包含如下几种:

        (1)中央仓库:Maven自带的远程仓库,包含有大部分开源构件,也因此使得Maven可以“开箱即用”

                http://repo1.maven.org/maven2 (具体查看$M2_HOME/lib/maven-model-builder-3.0.jar --org/apache/maven/model/pom-4.0.0.xml)

        (2)私服:在局域网内架设的远程仓库代理,可以降低访问外网的带宽占用,加快下载构件速度,降低中央仓库访问压力。也可将内部项目生成构件部署到私服上,供其他项目使用。

        (3)其他公共仓库:

                http://download.java.net/maven/2/, 

                http://repository.jboss.com/maven2/


远程仓库配置

        POM中配置

                遗留问题:

                        配置多个远程仓库的顺序?

                        构件版本指明,检查更新时的提醒?

         1.认证

                配置在settings.xml中:<servers>

        2.部署至远程仓库

                配置项目pom.xml:<distributionManagement>

                mvn clean deploy

         快照版本

                 如果没有快照版本,当多人协作时,实现不同的模块且模块之间存在依赖关系,此时为了实现模块间调用,需要指定版本号,但由于两个模块都处于开发中,都不稳定,被依赖模块会频繁变化。

                站在依赖方角度,可取的解决方案有:1.迁出依赖模块代码,本地编译;2.指定固定版本,每次需要手动删除以来构建后再更新;3.双方不停更换版本,但这也意味着每次变动都需要级联进行修改,且是多处。

                有了快照版本的概念,可以很好的解决上面的问题。Maven构建快照版本的构件时,会自动加上时间戳,当依赖方构件在构建过程中会按策略检查快照版本依赖的更新,如有新版本则取依赖的最新版本进行被依赖的构建活动。也可执行mvn clean install-U强制检查更新


                镜像配置

                        <mirrors>

                仓库搜索服务

                        http://www.mvnbrowser.com/http://mvnrepository.com/ https://repository.sonatype.org、http://www.jarvana.com/jarvana

                       

小结

        本文介绍了Maven仓库的概念以及布局,分类及其使用上的配置,同时解释了快照的概念--方便协同开发时的版本控制,最后也汇总了一些仓库搜索服务,方便日常开发。

1 0
原创粉丝点击