我们有几种产品具有很多共享的代码,并且必须保持几个版本。
为了解决这个问题,我们使用了许多Eclipse项目,其中一些包含库jar,而有些包含共享源代码(在一些项目中,是为了避免产生具有大量依赖关系的巨大堆,同时能够从头开始编译所有内容,以确保源和二进制文件是一致)。我们使用projectSet.psf来管理这些项目,因为它们可以直接从CVS中提取所有项目并留下一个充分准备的工作区。我们不直接构建或使用Maven。
现在,我们希望能够将所有这些项目及其各个版本放入一个Continuous Integration工具中(我喜欢Hudson,但这只是一个口味问题),这实质上意味着我们需要一种自动方式来检出项目以一个新的工作区,并按照每个项目中项目文件中的说明编译源文件夹。哈德森(Hudson)没有提供这种方法来构建项目,因此我一直在考虑哪种最佳方法。
想法已经
我真的很想听听其他人的经历,所以我可以决定如何处理。
编辑:另一个选项可能是使用对Eclipse项目和/或项目集了解得更多的CI。我们不是虔诚的- 这只是使事情运行而不必自己做任何事情的问题。定速巡航也许是更好的选择?其他?
编辑:发现ant4eclipse具有“团队项目集”功能。 http://ant4eclipse.sourceforge.net/
编辑:使用ant4eclipse和ant-contrib ant扩展来构建完整的工作空间,作为类似于Eclipse 3.5M6中的Runnable Jar工具的可运行的jar文件。我仍然依靠Eclipse创建初始的空工作区,并提取ProjectSet,因此这是下一个障碍。
编辑:最终具有双重配置,即Hudson从CVS中提取了ProjectSet.pdf文件中列出的相同模块集(需要具有相同的标签),导致它们彼此相邻放置。然后,ant4eclipse可以与主模块中嵌入的projectSet.psf文件一起很好地工作。注意事项:Hudson中的模块列表必须手动更新,并且之后似乎需要手动清理工作区,以使Hudson“发现”现在有比以前更多的项目。现在,这对我们来说已经工作了好几个月,但是要使所有内容都在ant文件中工作非常繁琐。
编辑:哈德森CVS项目中的ant4eclipse和Ctrl-A,Project面板中的Ctrl-C与Ctrl- V一起使用的“使用团队项目”结果已经可以很好地与我们一起使用(对于成熟的项目,很少更改)。我在等待ant4eclipse 1.0发布- http://www.ant4eclipse.org/,目前在里程碑2 -看到多少自产自销的功能可以与ant4eclipse的东西来代替。
编辑:ant4eclipse是M4中的20100609,所以http://www.ant4eclipse.org/node?page=1上的日程安排有所减少。
编辑:在长期使用ant4eclipse方法后,我的结论是,构建脚本变得非常粗糙并且难以维护。同样,Team ProjectSet工具(ant4eclipse用于定位项目)对于基于CVS的存储库非常有效,但是在我们迁移到git之后就不行了(这本身就是一件大事)。新项目很可能将基于Maven,因为Jenkins对此提供了良好的支持。
编写一个Hudson插件,该插件可以理解projectSet.psf来导出配置并进行构建。
这似乎是我的得奖答案。
我使用CruiseControl而不是Hudson,但以我的经验,如果您可以创建一个解决问题的插件,它将很快得到回报。通常,编写一个自定义适合您的解决方案的插件非常容易,而不是需要在类似情况下为每个人工作的插件。