`

多工程并行开发的项目,避免编译失败

阅读更多
最近这个项目,是几十个工程并行开发,通过ant统一编译以后打成war包

今天编译的时候发生了一次编译不通过。检查了一下,原来是在工程A中有一个接口增加了一个异常声明,结果工程B中某个调用该接口的类,就编译失败了

这里不吐槽java checked exception的问题,重点总结一下怎么避免编译失败的事情

1、要把相关的(依赖和被依赖)工程和lib库都下载到本地,同时保证本地编译不通过的代码,绝对不能往svn上提交

这个原则看起来非常基本,但是对于这次几十个工程的项目,就未必是这么回事了

因为往往开发人员只关注自己需要修改的那么几个工程。比如假设我平时只会用到工程A和B,但是工程A是依赖工程C的,同时工程D又依赖工程A

那我如果只把工程A和B都下载到本地,那我本地的工程A就很有可能是红叉,因为依赖的工程C在本地是没有的,或者是过期的

同时如果工程A中的代码修改了,由于我的本地是没有工程D的,所以我根本就看不到工程D的红叉(也就是本次的情况)

所以首先要把工程依赖和被依赖的工程都下载下来,这样的话,只要在本地ide中编译通过了再提交,基本可以保证svn上也能编译通过

当然这样就有一种可能,就是工程不断地相互依赖,最终把整个项目的所有工程都下载下来了,造成本地工程臃肿,而且每次本地编译就太久了。那么这个问题就涉及到项目初期的工程规划,不在本文的范畴

2、在提交之前要先更新周边代码,以免本地编译通过,但是svn编译失败

3、每次提交代码要完整,不能部分提交,否则也会造成本地编译通过,但是svn编译失败

关于2和3,在另一篇博客里有详细的说明:

http://kyfxbl.iteye.com/blog/1447060



分享到:
评论

相关推荐

    Caffe在windows下的安装配置及编译

    - **更改工程配置**:在所有项目的配置属性中,将“将警告视为错误”设置为“否(/WX-)”,以避免编译时因警告而导致的错误。 - **更改源码**:尝试编译`libcaffe`时,可能会遇到缺少参数的错误。此时,根据错误...

    (Vector Cast)UT 工程的总结问题

    UT(Unit Testing)工程是软件开发过程中的一个重要阶段,它涉及到对软件代码的最小可测试单元进行独立验证,以确保每个功能模块的正确性。这篇总结将深入探讨在Vector Cast环境下进行UT工程时可能遇到的问题以及...

    使用QUARTUS II做开发全流程

    1. **实体名称一致性**:在创建工程时,实体名称与工程名称、文件名称必须保持一致,否则会导致编译失败。 2. **器件选择正确性**:确保选择的器件型号与实际使用的FPGA相匹配,避免因不兼容而导致的问题。 3. **...

    openpose 封装成dll调用

    如果需要高性能运行,可以考虑使用多线程或者异步调用来并行处理多个图像,但这会增加代码复杂性。 9. **部署**: 当 DLL 开发完成后,除了 DLL 文件,还需要将 OpenPose 的依赖库(如 CUDA、OpenCV、Protobuf 等...

    DBCSR:分布式块压缩稀疏行矩阵库_Fortran_C_下载.zip

    它主要用于科学计算、工程模拟、数据分析等领域,尤其在并行计算环境中表现优异。该库支持Fortran和C两种编程语言,使得它具有广泛的适用性。 在高性能计算中,稀疏矩阵因其大量的零元素存储和运算效率问题,对内存...

    基于golang开发的网站爬虫模板

    Golang是Google推出的一种静态类型、编译型的编程语言,因其高效、简洁和并发特性,常被用于后端服务开发,包括网络爬虫的编写。以下是你需要了解的关键知识点: 1. **Golang基础**: - **语法特性**:Golang具有C...

    VS2008-CUDA3.2在台式win7 64位系统下的安装详细步骤和部分问题解决方案

    10. **模板项目测试**: 拷贝CUDA SDK中的模板项目至个人的VS工程项目文件夹中,测试项目的编译和运行,验证CUDA环境的正确配置。 #### 四、常见问题解决方案 - **规则文件加载失败**: 当出现无法加载“rules”的...

    makefile

    2. **错误处理**: 处理可能的构建错误,避免因为一个小错误导致整个构建过程失败。 3. **性能优化**: 通过并行构建、增量构建等方式,优化构建速度,减少不必要的资源消耗。 4. **兼容性考虑**: 确保Makefile在...

    单片机下载板驱动程序

    在电子工程和嵌入式系统开发领域,这种驱动扮演着不可或缺的角色。下面我们将深入探讨相关知识点。 首先,单片机是一种集成了中央处理器、内存和外围接口的微控制器,广泛应用于各种设备的控制单元。为了对单片机...

    java银行管理系统

    总的来说,Java银行管理系统是一个综合性的项目,涉及了软件工程的多个方面,包括设计模式、数据库操作、Web开发、安全性以及性能优化等。对于学习和掌握Java开发技能,这是一个极佳的实践平台。

    gradle用户手册中文版

    - **Project**: 在Gradle中,一个项目是一个或多个任务的集合,通常对应于一个软件工程中的子项目。 - **Task**: 是一个独立的工作单元,例如编译源代码、运行测试等。 2. **Hello World示例** - Gradle提供了...

    SQLServer2008查询性能优化 2/2

    10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 10.5 小结 281 第11章 查询设计分析 ...

    SQLServer2008查询性能优化 1/2

    10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 10.5 小结 281 第11章 查询设计分析 ...

    linux系统编程 培训资料

    资料中提及了对`makefile`的介绍,`makefile`是构建工程项目的工具,用于自动化编译和链接过程,对于大型项目尤其重要。 在Linux系统编程中,以下是一些核心知识点: 1. **系统调用**:Linux系统调用是用户空间...

    Java语言入门Java语言入门的必备

    - Sun Microsystems在投资了SGI项目失败后,将注意力转向了Oak项目,并且在1995年,随着互联网的兴起,Sun Microsystems看到了Oak在互联网上的巨大潜力,并将其重新命名为Java,推出了HotJava浏览器,这是Java在...

    Makefile中文手册

    9. **资源管理**:合理规划磁盘空间和内存使用,避免因资源不足导致的构建失败。 10. **错误处理**:在Makefile中定义错误处理逻辑,确保构建过程中的异常能够被妥善处理。 综上所述,《Makefile中文手册》不仅涵盖...

    数字信号处理系统的设计与实践

    如果出现连接失败的情况,可以在PC机的CMOS_BIOS中重新设置并行口的特性。 2. **DIP开关设置**:将TMS320VC5402 DSK上的DIP Switches的第5、6位设置为ON,其他位保持为OFF。 3. **安全操作**:建议在关闭CCS软件和...

Global site tag (gtag.js) - Google Analytics