最近这个项目,是几十个工程并行开发,通过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
分享到:
相关推荐
- **更改工程配置**:在所有项目的配置属性中,将“将警告视为错误”设置为“否(/WX-)”,以避免编译时因警告而导致的错误。 - **更改源码**:尝试编译`libcaffe`时,可能会遇到缺少参数的错误。此时,根据错误...
UT(Unit Testing)工程是软件开发过程中的一个重要阶段,它涉及到对软件代码的最小可测试单元进行独立验证,以确保每个功能模块的正确性。这篇总结将深入探讨在Vector Cast环境下进行UT工程时可能遇到的问题以及...
1. **实体名称一致性**:在创建工程时,实体名称与工程名称、文件名称必须保持一致,否则会导致编译失败。 2. **器件选择正确性**:确保选择的器件型号与实际使用的FPGA相匹配,避免因不兼容而导致的问题。 3. **...
如果需要高性能运行,可以考虑使用多线程或者异步调用来并行处理多个图像,但这会增加代码复杂性。 9. **部署**: 当 DLL 开发完成后,除了 DLL 文件,还需要将 OpenPose 的依赖库(如 CUDA、OpenCV、Protobuf 等...
它主要用于科学计算、工程模拟、数据分析等领域,尤其在并行计算环境中表现优异。该库支持Fortran和C两种编程语言,使得它具有广泛的适用性。 在高性能计算中,稀疏矩阵因其大量的零元素存储和运算效率问题,对内存...
Golang是Google推出的一种静态类型、编译型的编程语言,因其高效、简洁和并发特性,常被用于后端服务开发,包括网络爬虫的编写。以下是你需要了解的关键知识点: 1. **Golang基础**: - **语法特性**:Golang具有C...
10. **模板项目测试**: 拷贝CUDA SDK中的模板项目至个人的VS工程项目文件夹中,测试项目的编译和运行,验证CUDA环境的正确配置。 #### 四、常见问题解决方案 - **规则文件加载失败**: 当出现无法加载“rules”的...
2. **错误处理**: 处理可能的构建错误,避免因为一个小错误导致整个构建过程失败。 3. **性能优化**: 通过并行构建、增量构建等方式,优化构建速度,减少不必要的资源消耗。 4. **兼容性考虑**: 确保Makefile在...
在电子工程和嵌入式系统开发领域,这种驱动扮演着不可或缺的角色。下面我们将深入探讨相关知识点。 首先,单片机是一种集成了中央处理器、内存和外围接口的微控制器,广泛应用于各种设备的控制单元。为了对单片机...
总的来说,Java银行管理系统是一个综合性的项目,涉及了软件工程的多个方面,包括设计模式、数据库操作、Web开发、安全性以及性能优化等。对于学习和掌握Java开发技能,这是一个极佳的实践平台。
- **Project**: 在Gradle中,一个项目是一个或多个任务的集合,通常对应于一个软件工程中的子项目。 - **Task**: 是一个独立的工作单元,例如编译源代码、运行测试等。 2. **Hello World示例** - Gradle提供了...
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章 查询设计分析 ...
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章 查询设计分析 ...
资料中提及了对`makefile`的介绍,`makefile`是构建工程项目的工具,用于自动化编译和链接过程,对于大型项目尤其重要。 在Linux系统编程中,以下是一些核心知识点: 1. **系统调用**:Linux系统调用是用户空间...
- Sun Microsystems在投资了SGI项目失败后,将注意力转向了Oak项目,并且在1995年,随着互联网的兴起,Sun Microsystems看到了Oak在互联网上的巨大潜力,并将其重新命名为Java,推出了HotJava浏览器,这是Java在...
9. **资源管理**:合理规划磁盘空间和内存使用,避免因资源不足导致的构建失败。 10. **错误处理**:在Makefile中定义错误处理逻辑,确保构建过程中的异常能够被妥善处理。 综上所述,《Makefile中文手册》不仅涵盖...
如果出现连接失败的情况,可以在PC机的CMOS_BIOS中重新设置并行口的特性。 2. **DIP开关设置**:将TMS320VC5402 DSK上的DIP Switches的第5、6位设置为ON,其他位保持为OFF。 3. **安全操作**:建议在关闭CCS软件和...