博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】使用Maven的一些小建议,希望你能喜欢
阅读量:6830 次
发布时间:2019-06-26

本文共 1846 字,大约阅读时间需要 6 分钟。

搭建私有仓库

Maven的仓库是用来存放Maven工程依赖的包的(通常为jar和pom,war包也可以依赖,在一些很复杂的项目中才能用到)。仓库分为三种:中央仓库、第三方仓库、本地仓库。

中央仓库

由Maven官方提供,地址:http://repo1.maven.org/,包含了几乎所有开源项目的包,但没有非开源项目的包,如:sun的私有包,Oracle的驱动包等。在使用上也有一些限制:
第一,Maven的官方仓库的服务器在国外,在国内访问非常慢,经常因为网络超时导致无法下载;
第二,Maven管方仓库有使用频率限制,如果大的团队频繁从官方仓库下载包,会导致IP被封,从而所有人都无法使用;
第三,私有包不适合传到Maven官方仓库;
第四,组织对外网访问的限制,有些公司是不允许随便连接外网。

第三方仓库

由第三方公司搭建,如:http://repository.jboss.com/maven2/、http://repository.sonatype.org/content/groups/public/,公用的“第三方仓库”同样存在“中央仓库”的问题,可能没有IP限制;另一种私有的第三方库只在组织内部使用,通常使用nexus搭建,没有中央仓库和第三方公用仓库的限制,可以愉悦的发布私有包,更重要的下载速度快、稳定。
强烈建议每个使用Maven的组织都搭建自己的私有仓库。

本地仓库

本地仓库相当于“中央仓库”或“第三方仓库”在运行Maven的电脑上的一个缓存,当然只缓存了用过的包,默认在${user.home}/.m2目录下,由于“本地仓库”通常比较大,初始化比较慢,第一次使用时最好从其他人的电脑上复制一份,这样可以大大节省初始化的时间。建议在${MAVEN_HOME}/config/setting.xml中重新指定“本地仓库”的目录,防止缓存过大影响电脑的正常运行,这一点在持续集成服务器上尤其重要。

统一的setting配置

团队成员使用统一的setting.xml文件,在setting.xml中设置使用的仓库、禁用官方仓库等全局设置,非常不建议在项目的pom中做指定仓库这样的设置,这样做的原因主要是因为一个公司只应有一个私有仓库,这样即节省资源,也利于项目的重用和管理。

创建的顶级POM

每一个产品都应该有一个顶级的pom模块儿,在此模块儿中对使用的包、插件、发布用的仓库和一些其他项目级的配置进行设置,其他模块儿都是pom的子模块儿。这样的好处是整个产品的所有模块儿使用的包是一样的,能有效的避免各个模块儿单独配置带来的版本冲突问题。

合理的参数列表

运行mvn命令时常用的参数有,-B -e -U -pl -D -P,这些参数是Maven自身的,在命令行、持续集成环境都适用。

-B

使Maven在批处理模式下运行,避免需要人工参与交互而造成挂起,在持续集成等不希望人工参与的环境很有用。

-e

在运行maven出现异常时打印完整的异常栈,对问题的分析很有帮助

-U

强制Maven检查所有快照版(snapshot)依赖的更新,默认情况下Maven每天检查快照版(snapshot)依赖的是否更新,在实际开发中快照版的更新频率远高于这个频率,-U参数能保证每一次运行都是基于最新状态的,在持续集成环境这一点尤其重要。

-D

设置maven运行时的系统变量,和Java的-D参数类似,如:maven.repo.local、maven.test.skip

-P

指定构建使用的环境变量,通常每个项目(尤其是web项目)会在不同的环境下运行,如:开发环境、测试环境、生产环境等,不同的环境的配置是不完全相同的,使用Maven的profiefs可以方便的构建出适合不同运行环境的包,运行时使用的环境变量由-P参数指定。

-pl

在一个项目有多个模块儿,而又不想同时构建所有模块儿时,通过-pl参数指定要构建的模块儿,个人觉得这个参数用的场景不多,在模块儿很多的情况下,更应该从模块儿的上进行拆分,减少模块儿间的依赖。
 
综上所述,建议的Maven构建命令:jar和pom工程:mvn clean install/deploy -B -e -U -P,web工程:mvn clean package -B -e -U -P

读一本Maven的好书

建议使用Maven的同学们抽时间去阅读一下《Maven实战》这本书,是一本很好的Maven书籍,适合所有Maven用户。

转载地址:http://lqjkl.baihongyu.com/

你可能感兴趣的文章
PHP高级教程-文件上传
查看>>
【Redis缓存机制】1.Redis介绍和使用场景
查看>>
oracle NVL与Coalesce的区别
查看>>
python datetime fromtimestamp_浸在苏打水里的玩偶_百度空间
查看>>
【转载】SIFT算法分析(草稿)
查看>>
仿Drinkspiration App的menu
查看>>
一周最新示例代码回顾 (6/11 - 6/17)
查看>>
Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
查看>>
[转]Linux下阅读源代码:(g)vim+Taglist+ctags
查看>>
修改linux终端命令行颜色
查看>>
删除map、list集合元素总结
查看>>
搭建hadoop1.2集群
查看>>
autotools入门笔记(一)
查看>>
Imagex用法
查看>>
问题集
查看>>
ios实例开发精品文章推荐(7.23)
查看>>
php编译错误Note that the MySQL client library is not bundled anymore或者cannot find mysql header file...
查看>>
Myeclipse--jBPM4.3插件
查看>>
[每日一题] 11gOCP 1z0-053 :2013-10-12 RESULT_CACHE在哪个池?.............................44
查看>>
Unity物理系统的触发器
查看>>