- 浏览: 1152548 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
目前项目组在开发一个项目,由多个子模块构成,构建工具是maven,版本控制工具是svn。本文想对如何结合使用maven和svn提出一点初步的想法
一、只有svn的情况
首先考虑没有maven的情况。这样的话,项目组每个开发人员,都需要在本地check out所有的源码。
每次提交之前,需要先更新周边工程的代码。由于工程之间是依赖的,所以很可能需要把所有的代码都更新一遍。在项目依赖混乱的情况下,就更麻烦
等于说,项目组成员之间的协作,是以SVN为中心的
这种做法的缺点在于:
1、开发人员本地需要有所有的代码,编译速度很慢
2、如果是别人负责的模块出错,会影响自己的开发。如果项目比较大的话,别人负责的模块的问题,自己实际上是解决不了的
这种做法的优点在于:
1、提交之前做一次全量更新,相当于在本地做了一次全量编译,提交到SVN上基本可以保证不会出现编译错误。我称之为“悲观提交”,类似于数据库里“悲观锁”
2、由于本地有所有代码,所以本地构建比较不容易出错
二、引入maven的情况
maven的主要作用之一,就是对模块化开发的支持
开发人员A机器上可以只有工程A,开发人员B机器上只有工程B,其中工程B依赖工程A
只要工程A已经deploy到了远程仓库(私服),那么工程B就可以在本地构建,不需要有工程A的代码。也就是说,每个开发人员本地,都只需要check out自己负责的工程
这种做法的优点在于:
1、每个人只有自己负责的代码,本地构建的速度快
2、如果其他的模块构建出错,对自己的模块不容易造成影响
3、职责划分清晰
这种做法的缺点是:
1、高层模块的构建,依赖于低层的模块。由于开发人员B本地只有工程B的代码,如果工程A还没有deploy到远程仓库,则工程B就无法进行本地构建
2、提交到SVN后,有可能造成SVN上的全量编译失败。比如A删除了一个方法,并提交到svn,但是没有deploy。那么B就会基于A模块旧的构件来进行本地构建,成功后也提交了代码。这样的话,在svn上编译就无法通过
要避免发生以上的问题,我觉得在项目组内要遵循2个规定:
1、提交了代码,需要同时将模块deploy进远程仓库。以免造成远程仓库的构件与svn源代码的不一致
2、需要在pom里将构件更新的策略设置为always
- < snapshots >
- < enabled > true </ enabled >
- < updatePolicy > always </ updatePolicy >
- </ snapshots >
以上2个规定,第一个是解决提交不一致的问题,第二个是解决获取不一致的问题。目的都是为了避免构建成功,但是svn上全量编译失败的问题
由于是先提交,再发现是否SVN编译失败,所以我称之为“乐观提交”
三、比较
总的来说,上述两种方式的区别,关键在于:一种是本地有所有的代码;另一种是本地只有自己负责的代码
对于小项目来说,不存在这个问题。但是如果是比较大的项目,我认为后者是更优的,但是会引入一些额外的问题,需要项目组所有人遵循规范来避免
四、引入CI
结合使用svn和maven,如果引入CI的话,可以让这个过程更加容易
开发人员在本地构建成功之后,把代码提交到svn,由CI系统(比如hudson),来完成deploy的动作
或者,使用SCM插件,绑定到deploy阶段。在deploy成功之后,由插件完成提交svn的动作。这样也可以保证提交svn和deploy的一致性
如果提交之后,在svn上全量编译失败,那么CI系统也会第一时间通知相关人员
五、总结
总的来说,我认为有以下几点:
1、建议采用分模块开发的方式,每个开发人员仅check out自己负责的代码
2、将snapshots更新策略设置为always
3、用ci系统或者scm插件,保证check in和deploy的一致性
4、依赖ci系统,来及时发现svn上的编译错误
发表评论
-
用nexus搭建maven私服
2012-09-13 09:12 1127首先介绍一下背景,公 ... -
maven 去掉泛型警告和过时警告
2012-09-11 13:04 3458使用maven的过程中,常常会因为一些警告而不能通过编译,例如 ... -
maven 配置篇 之pom.xml
2012-08-27 08:36 1078pom作为项目对象模型。通过xml表示maven项目,使用 ... -
maven 配置篇 之 settings.xml 整理中...
2012-08-27 08:34 1163maven2比起maven1 来说,需要配置的文件 ... -
使用maven2 进行团队配置 整理中
2012-08-27 08:31 1395对于团队来说,建立统一的开发环境是必须的,而maven能很好 ... -
联通网络环境下无法访问http://repo1.maven.org/maven2/中央库解决,镜像库添加
2012-08-27 08:30 1626Maven 2的安装和使用虽然不是一点即用,但也不是很复杂 ... -
Maven新建欧洲中央镜像源
2012-07-12 09:42 1192熟悉maven的朋友都知道,我们maven的中央镜像源一直都 ... -
Maven properties
2012-01-19 10:57 1177Intro Because I couldn't fin ... -
maven常见问题问答
2011-12-29 08:21 1167. 前言 Maven ,发音是[`me ... -
Nexus入门指南(图文)
2011-12-28 08:16 1087Nexus介绍 Nexus 是Maven仓 ... -
Maven中多模块项目的Site生成
2011-12-31 08:46 1353疲累不堪的我一定不能在写完之前倒下。Maven生成站点大家都会 ... -
Maven的配置和使用
2011-12-29 08:21 11331、下载和安装maven 注:在使用之前,应首先安装 ... -
maven2站点的定制和发布
2012-01-05 11:02 1818mvn site功能强大,特别是在生成的项目站点中可以添加很多 ... -
一劳永逸的修改Maven的编译级别
2011-12-20 13:28 1356网络上最常见的方式是: Xhtml代码 ... -
Maven问题总结
2011-12-20 11:50 1984Maven问题总结 参考:http://tianya ... -
maven创建项目实例讲解
2011-12-06 10:14 1205在正文开始前,先要特别感觉两位同学——光远师兄和浩天,谢 ... -
maven 配置篇(一)
2011-11-26 16:44 1302了settings.xml配置,下来说一下maven2的主要配 ... -
Maven2 的新特性
2011-11-26 16:11 938Maven2 已经推出,Maven 的 ... -
Maven 配置
2011-11-18 08:27 1564在mvn.bat中很有用的一段 说了可以设置哪些参数 怎么de ... -
maven入门总结
2011-10-20 09:39 1100刚来公司使用的第一个构建工具就是maven,当时学会了几个 ...
相关推荐
4. **Eclipse SVN Maven插件**:此插件将Eclipse、SVN和Maven的功能结合在一起,使开发者能够在Eclipse环境中无缝地进行版本控制和项目构建。安装该插件后,用户可以直接在IDE内执行SVN的add、commit、update、merge...
本文将详细阐述如何结合Subversion (SVN)、Maven和Shell脚本来实现代码的自动发布。 **Subversion (SVN)** 是一个版本控制系统,用于跟踪和管理项目源代码的变化。在自动部署的场景中,SVN主要用于存储和更新项目...
ADT与Maven和svn结合,可以帮助开发者更有效地管理Android项目的构建和版本控制。 4. **集成工作流程**: "svn-maven-andrion插件"将这三个关键组件整合到一起,使得开发者可以在一个统一的环境中进行所有操作。...
Jenkins+Svn+Maven培训的知识点主要围绕持续集成(Continuous Integration,简称CI)的概念、原则、实践以及Jenkins、SVN和Maven三款工具的具体使用方法。 首先,持续集成(CI)是一种软件开发实践,旨在促进开发...
"手把手图解,详解Jenkins,svn,maven项目持续集成SHELL脚本"这个标题表明了本文将通过图形化的解释,详细介绍如何使用Jenkins、Subversion(svn)和Maven这三个工具来实现软件项目的持续集成,并涉及到使用SHELL脚...
在实际开发中,Eclipse Maven插件和SVN插件的结合使用对于Java开发者来说非常有益。m2e可以帮助管理项目依赖,构建和打包应用,而SVN插件则确保了团队成员之间的代码同步和历史追踪。这两个工具的集成,使得Eclipse...
- **项目对象模型(POM)**: Maven使用一个XML文件(pom.xml)作为配置文件,定义项目的结构和依赖关系。 - **生命周期**: Maven定义了多个项目构建周期,如clean、default、site等。 - **构建阶段**: 每个生命周期由...
【标题】"Hudson SVN Maven 自动构建"指的是在持续集成环境中使用Hudson(现在称为Jenkins)作为工具,结合Subversion(SVN)作为版本控制系统,Maven作为项目管理和构建工具,实现代码的自动构建过程。这个流程的...
因此,对于任何使用Eclipse的Java开发团队来说,安装并配置好SVN和Maven插件都是必不可少的步骤。这个压缩包提供的插件无需额外安装步骤,只需简单解压,即可让Eclipse具备这两项强大的功能,是开发者便捷工作的好...
本教程将重点讲解如何在内网环境下离线安装Jenkins,并结合Subversion(SVN)和Maven,实现持续集成与自动化部署。 首先,我们需要理解Jenkins。Jenkins是一款开源的持续集成服务器,它支持各种构建工具,如Maven,...
在Java开发中,Maven和Jenkins的结合使用能实现高效的持续集成。当开发人员将代码提交到SVN仓库后,Jenkins可以通过监听SVN的钩子(hook)自动触发Maven的构建过程。Maven负责编译代码,运行单元测试,打包应用,...
在压缩包"SVN管理软件+Maven小项目"中,可能包含了如何配置和使用这两个工具的指南、示例项目以及可能的配置文件。通过学习这些材料,开发者可以更好地理解和应用SVN和Maven,提升其在软件开发中的实践能力。
本文将深入探讨如何结合Maven和SVN实现项目的自动打包流程,帮助开发者更有效地管理和部署代码。 【Maven】:Maven是一个强大的Java项目管理工具,它能够帮助开发者构建、管理和部署项目。Maven通过使用一个统一的...
本文将详细介绍如何在Windows操作系统上配置一套基于Jenkins的持续集成环境,结合版本控制系统Subversion(SVN)、构建工具Maven以及应用服务器Tomcat,实现自动化构建和部署。 1. **Jenkins**:Jenkins是开源的...
这涉及到从版本控制系统中检出代码,使用Maven进行项目构建,通过Jenkins触发构建过程,并结合SonarQube进行代码质量的分析和报告。 整个集成工作流程大致如下: 1. 开发者在SVN中提交代码变更。 2. Jenkins通过...
本文将详细介绍标题中提到的几个关键工具:SVN、Maven、Eclipse(exp)、OpenExplorer、ADT以及EGit,并结合描述中的“link”安装方式进行讨论。 1. **SVN (Subversion)**:SVN是一种版本控制系统,用于跟踪和控制...
在开发环境中,Hudson经常与SVN结合使用,自动拉取最新代码并进行构建。 3. **Maven**:Apache Maven 是Java项目管理工具,它提供了标准化的项目结构和生命周期,简化构建过程。Maven通过依赖管理和项目信息管理,...
本文将详细讲解一个基于maven、springmvc、mybatis技术栈的电商项目,结合svn版本控制和hudson持续集成的实施过程。广西移动电子商城项目旨在构建一个网上商城,以应对通信行业竞争格局的变化,强化服务竞争力。系统...
- Maven 与版本控制系统(如 SVN)紧密结合,方便团队成员之间共享代码。 - 可以使用 Maven 插件来自动化 SVN 的操作,如自动提交构建结果到 SVN 等。 5. **IDE 集成** - Maven 可以很好地与 Eclipse 或 ...
本篇将详细讲解如何结合Nexus、SVN、Jenkins(Hudson)、Maven以及禅道这五款工具,搭建一个适用于敏捷开发流程和持续集成理念的环境。这个环境能够极大地提升开发效率,简化项目管理流程。 **Nexus**: Nexus是一款...