所以我有一个很好的 Java 项目,使用 Ant 构建到 /dist 文件夹。
整个项目处于版本控制之下,因此我只需通过 dist 文件夹路径上的“svn导出”即可部署最新版本。
但我的构建不断删除 dist 文件夹内的 .svn 文件夹及其所有依赖项,因为它在构建时会清除该文件夹,而不是仅仅覆盖。确切的罪魁祸首是 JarBundler,它是构建我的 mac.app 包的 Ant 任务 - 它在重新创建之前删除了整个包的文件夹。
这显然使我的 svn 崩溃,因为该文件夹的所有 .svn 文件夹现在都丢失了,所以它说它存在冲突。
有人对我如何解决这个问题有任何想法吗?我不知道如何阻止 jarbundler 删除所有内容,所以我担心我将不得不做一些更黑客的事情。我对 Ant 也很陌生,仅供参考。
在源代码管理中拥有 distcan如果您希望您的源代码控制系统成为一个良好的实践,独特的参考对全部:
- 开发商
- 汇编程序(单元测试)
- 同源测试人员(您在集成平台上查询一堆 dist,并在那里执行非回归测试、性能测试、压力测试等)
- 生产发布经理
...
但你需要有一个适当的发布流程来完成这个任务。
就你而言,build必须在一个单独的私有目录,这是一个不在 subversion 中的目录。当构建没问题时,你import如果它是一个official发布,或者如果它是临时构建,只需下一个团队需要,则将其导入到共享目录(从而避免将数百个构建提交到 SCM,白白浪费空间)。
注意:在 SCM 中进行传递(dist)的主要优点是允许依赖的项目不与您的源代码一起工作,而是直接与您的交付一起工作(这必然会在某一时刻或另一时刻进入生产):如果他们设法使他们的代码工作,通过与您的交付一起编译,那么他们很可能会成为自己的目标,当与您一起部署,将会起作用。
这样,其他团队就可以在访问其任何源时访问您的交付(您的“myProject.jar”):他们可以通过 SCM 读取您的 jar 的版本、日期、历史记录、元数据、标签以及很快。
然而,对于一个小型整体项目(如“没有其他项目依赖它”)项目,可以说 dist (最终打包交付)可以根据需要重新构建并存储在外部参考系统中,例如作为外部 Maven 存储库。
但是:Maven 不是 SCM 存储库,这意味着您需要对 jar 进行签名(“MyProject-1.0.jar”),您没有历史记录,并且需要在交付过程中在单独的文本文件中报告所有元数据。访问该 Maven 存储库中的该交付的任何其他项目都需要根据您的版本命名约定调整其脚本和类路径。
另外,Maven 是开发架构中的另一个存储库。只要你能将存储库的数量保持在最低限度(“1”;)),那就更好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)