锁定老帖子 主题:一种不好的开发方式
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-12
kyfxbl 写道 我不是要和你辩论,但是你说的几条我没懂: 1、你修改工程A,跟工程B没关系?我都说了,工程A里面依赖了工程B的编译结果,工程B修改后没编译,你工程A还能正常发布? 问题在于:你不应该依赖打包好的工程B,如果工程B还是在开发过程中的,你就应该只依赖于B的source code。 kyfxbl 写道 3、请问不能独立运行的工程,你打war包干什么,用来看? 如果不能“独立运行”, 那么只有两种办法:1. 依赖单元测试。2. 每次A的修改,都必须导出到B,运行B进行验证。 kyfxbl 写道 4、我理解你的意思了,你的另一个工程反正都是用ant编译以后给另一个工程用的,所以稳定不稳定没关系,但你这个说法就和你自己的第一条矛盾了 为什么用ant?直接用eclipse的export war不行吗? |
|
返回顶楼 | |
发表时间:2012-03-12
是不是以前搞vc的人弄的啊。
|
|
返回顶楼 | |
发表时间:2012-03-12
eclipse插件的开发方式就是这样的
|
|
返回顶楼 | |
发表时间:2012-03-12
hu437 写道 说这些只是讲一下我们的情况,和楼主的对比探讨一下,并不是为了证明谁对谁错 1、比如我现在我的工程A依赖B工程,既然有了依赖,肯定是依赖现有的,也就是已经打包的B,意思就是说,如果你的工程是1天一打包,那么,你的A工程今天写的代码,肯定是依赖于昨天的B,而不是今天的B,因为今天的B的内容还不知道,怎么依赖?既然是依赖的昨天的那么今天的能不能打包又有什么关系? 3、打war是为了方便部署更新,并不是为了让独立运行。简单说就像你用wordpress一样,你的主工程是wordpress这个程序,其他的工程就类似插件,你能让插件独立运行么? 4、参看1. 之所以说大工程,并不是说大工程一定要这么做,而是工程大了,这样会方便许多。多人(有时候有还有外包团队)、多模块的开发这样的方式是很适合的。并不是想强调自己做的项目有多大什么的。 谢谢。以前主要都是依赖IDE,所以不太熟悉,我先想想你说的这些,感谢 |
|
返回顶楼 | |
发表时间:2012-03-12
elmar 写道 kyfxbl 写道 我不是要和你辩论,但是你说的几条我没懂: 1、你修改工程A,跟工程B没关系?我都说了,工程A里面依赖了工程B的编译结果,工程B修改后没编译,你工程A还能正常发布? 问题在于:你不应该依赖打包好的工程B,如果工程B还是在开发过程中的,你就应该只依赖于B的source code。 kyfxbl 写道 3、请问不能独立运行的工程,你打war包干什么,用来看? 如果不能“独立运行”, 那么只有两种办法:1. 依赖单元测试。2. 每次A的修改,都必须导出到B,运行B进行验证。 kyfxbl 写道 4、我理解你的意思了,你的另一个工程反正都是用ant编译以后给另一个工程用的,所以稳定不稳定没关系,但你这个说法就和你自己的第一条矛盾了 为什么用ant?直接用eclipse的export war不行吗? 谢谢你的图,还特地做了个example来截图,很感谢你。我看一下 |
|
返回顶楼 | |
发表时间:2012-03-12
我看上面还有同学没有提到一个重要的问题:
我曾遇到个看上去 跟楼主叙述差不多的项目。其实并不是不能规范,而是尽量提高二次开发的门槛,现在那个项目已经7、8年了,只有他们原始团队在维护,这一算下来附加值巨大啊。 项目在我们手上就很难调试,但他们自己开发了针对各个模块的调试、测试包。 跟他们协力做开发的时候,几乎没遇到过因为依赖更新造成的麻烦,他们有自己的一套辨识接口的方法(非标准接口)。 总之就是你脱离对方进行开发,成本非常大。让他们开发他们做起来很轻松。新人根本无法上手…… |
|
返回顶楼 | |
发表时间:2012-03-12
hu437 写道 kyfxbl 写道 Pigwen 写道 用ant实现了一个maven。。。
不过楼主别不习惯工程分这么细,很多maven项目的模块也分得很细的。 不是分工细不细的问题,分工细怕啥。我是发愁帖子里提到的3个现实的问题,怎么办? 你说的这些问题有些就不是问题的 第一个:如果写代码按下ctrl+s保存,使用IDE的自动编译部署,工程大了,会很崩溃了,编译部署一次花个几十秒,几分钟的,岂不崩溃了。项目小的时候使用IDE的自动编译部署很方便,因为用时就一两秒,感觉不到的。 第二个:上面已经很多人说了,依赖的问题,不影响什么。至于你说的晚上一合并编译就出问题,那说明是变了api,接口等内容,这个需要项目前期定好规范和交流内容。即使同一个工程,如果项目前期不定好沟通的规范,同样会出现。 第三个:在项目前期的开发阶段,这是没办法,你即使将这些所有合并成一个工程,编译的时间也是不会减少的。上面说过,你提的解决办法是稳定的才打包,对于java工程来说,打不打包是一样的,只是为了方便管理。所以在不在稳定的时候打成jar包这个是没关系。 你们的项目需要引入的是: 1、自动构建工具,晚上或者是定时进行项目构建。 2、对于构建出的问题,然后制定相应的管理规范。比如:对于不稳定的代码,不能运行的代码不要提交等。 这个说的很有道理 |
|
返回顶楼 | |
发表时间:2012-03-12
没看评论,直接回复楼主。
其实这种项目情况,也是有理可循,而且也常见 一,基于主产品而衍生出的子产品,但子产品各个间又有着依赖关系。 二,项目解耦,各个项目交由各个负责人管理,但需要高协同。 三,利益链分配,有时候一个project在国内,另一个在国外。你懂的。 至于解决这方面问题,我个人见解, 各个project中要建立单元测试框架,集成测试框架,并加入持续集成框架,例如Jenkins。保证project级别的无错误。 project之间有必要可以建立一个独立的项目去整合各个project之间的接口调用,借鉴门面模式。 对于开发人员来讲,把要引用的project独立打成jar包,引用到IDE中来,你只关心你开发项目中的代码即可。对于部署很久的问题,推荐用JRebel实现热部署(有兴趣的话可以站内信)。 |
|
返回顶楼 | |
发表时间:2012-03-12
spring framework3.1.1由23个子工程组成,每一个都可以打一个jar包,每一个都无法用由页面显示,但是每一个功能都有精密的单元测试。JQuery的开发模式也类似。维护的好的话,也是不错的。
|
|
返回顶楼 | |
发表时间:2012-03-13
我现在分项目的依据是:
1.共用的Java程序分成一个Java Project。 2.共用的静态资源(如JavaScript,flash等)分成一个普通的web project,本可以弄成静态的web project,但是为了在eclipse里部署方便,还是弄成动态的web project。 3.各个子系统各自分成一个web project。这各个子系统直接一般都没依赖,或者依赖极少。 4.一个总的web project,将各个子系统组合。 |
|
返回顶楼 | |