首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当ant构建过程在版本控制上失败时该怎么办

当ant构建过程在版本控制上失败时该怎么办
EN

Stack Overflow用户
提问于 2008-10-21 06:04:30
回答 5查看 273关注 0票数 2

所以我有一个很好的Java项目,用Ant构建到一个/dist文件夹。

整个项目都在版本控制之下,所以我只需在dist文件夹的路径上使用'svn export‘就可以部署最新的版本。

但是我的构建会一直删除dist文件夹中的.svn文件夹,以及它的所有从属文件夹,因为它会在构建时清除文件夹,而不仅仅是覆盖。确切的罪魁祸首是JarBundler,这是构建我的mac.app包的Ant任务-它在重新创建之前删除了整个包的文件夹。

这显然把我的svn搞砸了,因为该文件夹的所有.svn文件夹现在都丢失了,所以它会显示冲突。

有谁有办法解决这个问题吗?我不知道如何阻止jarbundler删除所有内容,所以我不得不做一些我担心的更麻烦的事情。我也是Ant的新手,只是作为参考。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-21 06:17:08

如果你想让你的源码控制系统成为一个唯一的参考,那么将dist放在源码控制中是一个很好的实践:

  • developers
  • assemblers (unit-testing)
  • homologation测试人员(在您的集成平台上查询大量dist,并在其中执行非回归测试、性能测试、压力测试等)
  • production release managers ...

但你需要有一个适当的发布过程来度过难关。

在本例中,构建必须位于单独的私有目录中,该目录不在subversion中。当构建正常时,如果它是一个正式版本,你可以将它导入到subversion中,或者如果它是一个临时构建,那么你可以将它导入到一个共享目录中,这只是下一个团队需要的(这样就避免了将数百个构建提交到中,无用地使用空间)。

注意:在您的配置管理中拥有交付(dist)的主要优势是允许依赖于项目不与您的源代码一起工作,而是直接与您的交付一起工作(这必然会在某一时刻或另一时刻投入生产):如果他们设法使他们的代码工作,通过与您的交付一起编译,机会是他们自己的dist,当与您的部署时,将会工作。

这样,其他团队就可以像访问他们的任何源一样访问您的交付(您的“myProject.jar”):他们可以通过SCM读取您的jar的版本、日期、历史记录、元数据、标签等。

然而,对于一个小的整体项目(如“没有其他项目依赖它”),可以认为dist (最终打包交付)可以按需重新构建,并存储在外部引用系统中,例如作为外部Maven存储库。

但是: Maven不是SCM存储库,这意味着您需要签署您的jar ('MyProject-1.0.jar'),您没有历史记录,并且您需要在交付过程中在一个单独的文本文件中报告所有元数据。访问该Maven存储库中的交付的任何其他项目都需要根据您的版本命名约定调整其脚本和类路径。

另外,Maven是开发架构中的另一个存储库。只要您能将repos的数量保持在最小( '1‘;) ),它就会更好。

票数 3
EN

Stack Overflow用户

发布于 2008-10-21 06:06:24

很简单。不要将/dist签入到版本控制中。

版本控制确实不应该有任何生成的代码/二进制文件/jars/what- have -you。

票数 0
EN

Stack Overflow用户

发布于 2008-10-21 06:09:40

也许我在这里遗漏了一些东西,但是为什么你要把你构建的产品签入到你的源代码控制系统中呢?一般来说,这不被认为是好的做法。

如果您确实希望签入构建产品,请将它们复制到其他地方(可能是一个名为“pre- build”的目录),然后从那里签入它们。

编辑后添加:您不应该这样做的原因是,给定当前的源代码,您应该能够使用单个构建命令重新创建发行版。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/220918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档