我有一个相当大(数千个文件)的项目,分为客户端(100% C#)和服务器(95% Java 和一点 C#)。
我最近将 Ivy 作为测试引入到服务器中,它运行良好,可以获取依赖项并发布。我可以为客户端提供另一个 ivy 配置/设置,但我确实应该将整个服务器+客户端一起发布,这意味着应该有一组 Ivy 配置和一个发布步骤。
我没有看到在客户端使用 Ivy 的任何主要障碍,尽管 Ivy 是用 Java 编写的,但大多数概念都是通用的。我很高兴从 ant 调用 nant 来进行 C# 构建 (MSBuild)。
话虽如此,是否有人有执行以下操作的经验/建议
- 在多语言项目中使用 Ivy
- 使用 Ivy 消除多语言依赖
- 使用ivy在单一版本下进行多语言发布
任何示例都是最有用的。
最佳答案
Ivy 作为通用依赖管理器
你说得很对,ivy 是一个通用的依赖管理器,可以管理任何工件。
我之前提供了使用 ivy 创建 ivy 存储库的示例:
good ivy tutorial for local repository?
这是将 zip 文件发布到 Nexus 的示例
It's possible to put binary files on nexus repository?
客户端和服务器
我的建议是将客户端和服务器开发分开。客户端团队可能依赖于服务器团队生成的库,保持模块分离允许团队处理每个发布到存储库的最新稳定二进制文件。
没有什么可以阻止您创建同时依赖于客户端和服务器模块的父模块。
存储库
Ivy 非常适合管理小型存储库,但我建议考虑使用完整的存储库管理器,例如 Nexus , Artifactory或Archiva 。这使得可以对互联网上可用的 jar 进行本地代理(提高性能和可靠性),并提供上传二进制文件进行存储的接口(interface)。
关于最后一点,一个不太为人所知的事实是 Maven 存储库还可以存储任何类型的工件。 Maven 模块 POM 包含一个可选的“打包”标签,默认为“jar”,但可以是任何文件扩展名。
所以要两全其美! :-)
关于c# - 大型客户端/服务器项目布局和 Ivy 设置的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660407/