`

ivy中文参考文档(7)-最佳实践(下)

阅读更多

5) 处理集成版本

    当工作在一个团队中或者多个模块时,你需要依赖中间的没有完成的模块版本。这些版本我们称之为集成版本,因为他们主要的目标就是和其他模块集成来构成或者测试一个运用或者框架。

    如果你在模块开发过程中欧那个遵循持续集成的规范,这些集成版本可以被持续集成服务器非常频繁的产生。

    因此,如何处理这些可能数量繁多的集成版本呢?

    主要有两种方法可以处理它们,ivy目前都支持:

    1. 使用命名约定如一个特殊的后缀

    这个主意非常简单,每次你发布你的模块的一个新的集成你使用相同的名字给这个版本(例如在maven世界中的 1.0-SNAPSHOT)。然后依赖管理器意识到这个版本是特殊的因为它始终在改动,因此它将不信任本地缓存,如果它已经有了这个版本。而是去检查仓库中这个版本的数据看它是否有改动。在ivy中对这个的支持是通过在依赖上使用changing 属性或者配置changing模式来使用所有的模块的方式来实现的。

    2. 每次自动创建一个新版本
  
    这种情况下使用build number或者时间戳来使用新的版本名称发布每个新的版本。然后你可以使用ivy提供的多个方式中的一个来"明确版本约束"。通常选择最新的一个(使用'latest.integration'作为版本约束)就足够了。

    哪个方法最好?通常,这取决于你的上下文,如果这两个方法中的任何一个实际上不好用那么ivy不会去支持它:-)

    但是通常我们推荐使用第二个方法,因为每次你发布一个新的版本时使用一个新的版本名称更符合版本身份规范,并且可以使你的所有的构建可重现,即使是集成版本。有趣的是,在你的构建系统中进行一些工作后,它可以引入一种机制来提升集成构建到更稳定的状态,类似里程碑或者发布。

    想象你有一个客户周一过来并要求拿到你的软件的最新版本,用于测试或者示范。很明显他下午就需要它:-) 现在如果你有持续集成过程并有很好的更变和制品跟踪,实际上你并不需要更多的时间来满足他的要求:-) 但是可能会发生这样的情况,你的最后的一个足够稳定可以用于客户的版本实际上市几天前构建的,因为最新的版本刚好破坏了一个特性或者引入了一个新的不想交付的特性。在这种情况下,如果你需要你可以交付这个'稳定'的集成构建,但是请确认,几天或者几个星期甚至几个月后,你的客户将要求在这个仅仅用于示范的版本上的一个bug修订。为什么?因为他是客户,而我们都知道他们会如何:-)

    因此,在你的仓库中为每个构建使用构建版本提升特性,这个解决方案将非常容易:例如,当客户要求版本时,你不仅仅交付集成构建,而且你也提升构建到一个里程碑状态。这个提升显示你将在长时间内保持对这个版本的追踪,以便可以返回到这个版本并且在需要时创建分支。

    不幸的是ivy自身不考虑持有这样的可重现的构建,很简单,ivy是依赖管理器,不是构建工具。但是如果你使用不同的名字发布唯一版本,并在发布或模块递归发布的过程中使用ivy特性比如版本约束替换,将十分有帮助。

    另一方面,这个解决方案的主要缺点就是它将产生大量的中间版本,而你将不得不在你的仓库中运行很多清理脚本,非常你的公司名以G 开头以oogle结尾 :-)

6)是否将依赖内联(inlining)

    在ivy1.4中,你可以解析一个依赖而不需要写ivy文件。这被成为"内联(inlining)"。但是它对什么有利,而什么时候应该避免呢?

    将ivy依赖放置到一个单独文件有以下的优点:

    * 分割修订版本周期
    如果你的依赖可能比你的构建更频繁的改动,那么将这两个分隔是一个好主意,可以独立出两个概念:描述如何构建和描述你的项目依赖。

    * 发布的可能性
    如果你描述一个自身可以被复用的模块的依赖,你希望将它发布到仓库。在这种情况下只有你有单独的ivy文件发布才有可能。

    * 更灵活
    内联依赖仅仅能用于表达一个依赖并且只能一个。ivy文件可以用于表达更复杂的依赖。

    另一方面,以下情况使用内联依赖非常有用:

    * 你希望在你的ant构建中使用定制任务

    没有ivy的情况下,通常或者是复制定制任务的jar到ant的lib目录下,这需要维护你的工作站安装,或用恰当的classpath通过手工复制或者下载任务定义(taskdef),这个更多。但是如果你有多个定制任务,或者如果他们有自己的依赖,这将变得非常麻烦。通过内联依赖来使用ivy是解决这个问题的一种优雅的方式。

    * 你希望容易部署应用

    如果你已经构建了你的应用而它的模块使用ivy,那么用你的ivy仓库来下载你的应用和它所有的依赖到本地文件系统来准备执行是非常容易的。如果你同时将你的配置文件作为制品放置在你的仓库(也行打包为zip文件),整个安装过程可以依赖ivy,简化你的仓库中可以得到的应用的任意版本的自动安装。


7) 雇用专家

    在软件开发时间中构建和依赖管理通常被是 。我们经常看到开发人员在他们有时间的时候实现构建管理。即使这种方式看上去短期内可以节约时间和钱,长期看它通常转为一个非常坏的选择。构建软件不是一个简单的任务,当你想保证自动化,被测试过,完全可重现的构建,发布和安装。另一方面,一旦一个好的可以满足你非常特殊的构建系统被安装好,它可以只依赖很少的对此有良好理解的人,就可以做到持续的质量保证。

    因此雇用一个构建和依赖的专家来分析和改进你的构建和发布系统在大多数时间是一个非常好的选择。

8) 反馈

    这些最佳实践反映的是我们自己的经验,但是我们不会假装我们掌握了依赖管理或者甚至是ivy使用的唯一真理。

    因此请不要客气地在这个页面上面评论来增加你自己的经验反馈,建议或者主张。

0
0
分享到:
评论

相关推荐

    Spring Framework 4.1.0参考文档

    总的来说,Spring Framework 4.1.0参考文档详细介绍了Spring Framework各个方面的知识,从基础概念到高级特性,从模块划分到应用最佳实践,为开发者提供了全面的学习资源和指导。希望以上的详细知识点能够为使用...

    spring-reference

    - Spring 3.0发布了一系列新的文章和教程,涵盖了如何使用新特性、最佳实践等内容,为开发者提供了丰富的学习资源。 以上是对Spring框架参考手册的部分内容进行的知识点提炼,这些知识点不仅涵盖了Spring的基本...

    ant文档集合(自己学习ant时的资料)

    Ant是Apache软件基金会...这个压缩包中的文档涵盖了Ant的基础知识、教程、参考和最佳实践,对于想要深入学习Ant的人来说是一份全面的学习资料。通过阅读这些文档,你可以逐步掌握Ant的使用,提升项目构建的效率和质量。

    chief_river 平台设计规范

    - **布局和布线指南**:提供了有关电路板设计的最佳实践,包括信号完整性和电磁兼容性等方面的考虑。 **4. 其他重要组件** - **存储解决方案**:包括对SSD和HDD的支持以及相应的性能优化策略。 - **网络连接**:...

    grails-doc-CN-1.0.rar

    `grails-doc-CN-1.0.rar` 文件包含的是 Grails 1.0 版本的中文参考文档,对于那些不熟悉英文文档或者想要深入了解 Grails 的中文用户来说,这是一个极其宝贵的资源。 文档主要涵盖以下几个关键知识点: 1. **...

    Spring的官网文档

    由于文档内容的不断更新,开发者应当定期访问官网或下载最新的文档,以获取最新的信息和最佳实践。由于技术限制,文档中的文字可能会有少量识别错误,但是整体内容仍足够清晰和连贯,供读者学习和参考。

    spring 官方文档

    标题“spring 官方文档”和描述“spring-framework-reference.pdf”表明我们即将讨论的是Spring框架的官方参考文档,这份文档是Spring 4.2.4版本的。文档内容涉及Spring框架的各个方面,从基础知识到高级特性,再到...

    spring3.2的官方文档

    而在命名约定方面,则提供了一系列的指导原则,以便开发者能够遵循最佳实践,构建清晰、一致的Spring应用程序。 此外,文档还详细阐述了Spring Framework 3中新增加和改进的内容,例如: 1. Java 5支持:随着Java ...

    spring4 英文文档

    Spring Framework是一个开源的Java平台,...它不仅覆盖了从基础入门到高级特性的所有知识点,还提供了最佳实践和详细的配置指南。对于任何希望深入理解和掌握Spring框架的开发者来说,这份文档都是不可或缺的学习资源。

    gradle-8.0.2-all.zip gradle-8.0.2-all.zip gradle-8.0.2-all.zip

    Gradle 是一个强大的构建自动化工具,广泛用于Java、Android和其他 JVM 语言的项目。它以其灵活性、可扩展性和高效的依赖管理而闻名。...为了充分利用Gradle,建议深入阅读其官方文档,了解各项功能和最佳实践。

    spring-webflow

    本指南涵盖了 Spring Web Flow 2 的所有核心概念和功能特性,并提供了详细的示例和最佳实践建议。 **1.2 运行需求** 为了运行 Spring Web Flow,你需要具备以下条件: - Java SE 5 或更高版本。 - Spring ...

    华硕h61m-d点位图

    【华硕H61M-D点位图】是针对华硕这款主板的电路布局图,对于DIY爱好者和电脑维修人员来说,具有重要的参考价值。...在进行任何硬件操作或固件更新时,遵循官方指南和最佳实践是避免潜在风险的关键。

    Intel®OpenSource HD Graphics Programmer’s Reference Manual

    OpenSource HD Graphics Programmer’s Reference Manual》是一份非常全面且详细的文档,不仅提供了Intel Ivy Bridge架构图形核心的技术细节,还涵盖了许可使用、产品责任以及开发过程中的最佳实践等内容。...

    spring文档4.3.x版本

    官方文档是获取Spring框架最新特性和最佳实践的权威资源。Spring官方推荐开发者使用Spring Boot,这是基于Spring框架的一个更加轻量级、快速搭建项目和开发应用的工具。Spring Boot旨在简化Spring应用的初始搭建以及...

    gradle-2.14.1-all.zip 官网备份

    2.14.1版本可能包含了Java、Android以及其他常用插件,这些插件可以自动应用最佳实践并简化项目配置。 4. **Gradle Documentation**:压缩包内可能包含了丰富的文档,如用户手册、API参考和升级指南,帮助开发者...

    spring 3.1 参考手册 英文

    ### Spring 3.1 参考手册中文解读 #### 概览 Spring 3.1 是 Spring 框架的一个重要版本更新,它在 Spring 3.0 的基础上增加了许多新特性和改进,旨在提高开发者的生产力并进一步增强框架的功能性。本篇解读将根据...

    Spring framework reference 4.3.4

    最后,文档可能还提及了一些与Spring框架使用相关的最佳实践、技巧和窍门,以及在实际开发过程中可能遇到的一些问题和解决方案。然而,由于这部分内容并未在文档节选中展示,具体细节不得而知。需要强调的是,Spring...

    Ant参考教程,Ant使用指南,Ant全攻略

    本教程将详细讲解Ant的基本概念、使用方法以及最佳实践。 首先,对于初学者来说,理解Ant的基本结构至关重要。在Ant中,"project"是构建的基本单元,包含了构建过程中的所有任务。每个项目定义了目标(target),...

    gradle-3-用户指南:Gradle 3用户指南

    9. **最佳实践** - **构建脚本结构**:保持构建脚本整洁和模块化。 - **任务重用**:避免重复任务,利用任务依赖和配置共享。 - **版本控制**:如何将构建脚本纳入版本控制系统。 通过阅读和实践《Gradle 3 用户...

    Spring Framework 4.0 Documentation

    Spring Framework 4.0文档是开发人员学习和参考的重要资源,它详细介绍了Spring框架的各个组件、功能和最佳实践。Spring Framework是一个开源的Java平台,为现代企业级应用的开发提供了全面的基础架构支持。其核心...

Global site tag (gtag.js) - Google Analytics