Post by 铁木箱子 in 技术杂谈 on 2010-08-03 17:17

[转载声明] 转载时必须标注:本文来源于铁木箱子的博客http://www.mzone.cc
[原文地址] 原文永久地址是:http://www.mzone.cc/article/277.html

在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。

maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写),如下:

<groupId>cc.mzone</groupId>
<artifactId>m1</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>

maven2会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。

所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

最新文章

  1. 旺财速啃H5框架之Bootstrap(三)
  2. 第二天--html+css
  3. 启动调试IIS时,vs无法在 Web 服务器上启动调试。Web 服务器未能找到请求的资源。 有关详细信息,请单击“帮助”。
  4. JSP Filter用法
  5. EF封装类 增加版,增加从缓存中查找数据方法,供参考!
  6. php解析url的三种方法举例
  7. ECSHOP购物流程收货人信息详细地址显示省市区
  8. Python学习笔记2——模块的发布
  9. char nvarchar varchar
  10. Gradle构建Java Web应用(转)
  11. Java异步调用Future对象
  12. 学习wxpython的网站
  13. abap alv multiple header using write
  14. Django 1.10中文文档-执行查询
  15. React componentDidMount
  16. 在Hue中提交oozie定时任务
  17. Linux 双网卡配置两个IP同时只有一个会通的原因
  18. linux 3.10 一次softlock排查
  19. Bitnami Redmine 中文附件名 报错修复
  20. 使用keytool生成ssl密钥文件keystore和truststore

热门文章

  1. 用Xcode6的Leaks检测内存泄漏
  2. Android-Adapter-View复用机制
  3. Visual Studio Debug和Release的区别及obj的作用
  4. Request Header Or Cookie Too Large
  5. vuejs -- 如何使一个自定义函数在加载时自动执行
  6. jquery $(document).ready() 与js原生的window.onload的区别总结
  7. kubernetes1.5.2集群部署过程--非安全模式
  8. linux selenium运行chrome
  9. 新人补钙系列教程之:AS3 与 PHP 简单通信基础
  10. Oracle 11g Flashback_transaction_query的undo_sql为空解决办法