【问题标题】:Suggestions for big Client/Server project layout and Ivy setup大型客户端/服务器项目布局和 Ivy 设置的建议
【发布时间】:2011-04-09 07:01:24
【问题描述】:

我有一个相当大的(数千个文件)项目,它分为客户端(100% C#)和服务器(95% Java 和一点 C#)。

我最近将 Ivy 作为测试引入服务器,它工作正常,获取依赖项和发布。我可以为客户端设置另一个 ivy 配置/设置,但我真的应该将整个服务器+客户端一起发布,这意味着应该有一组 Ivy 配置和一个发布步骤。

虽然 Ivy 是用 Java 编写的,但我认为在客户端使用 Ivy 没有任何重大障碍,但大多数概念都是通用的。而且我很高兴从 ant 调用 nant 来进行 C# 构建 (MSBuild)。

这么说有没有人有做以下事情的经验/建议

  • 在多语言项目中使用 Ivy
  • 使用 Ivy 下拉多语言依赖项
  • 使用 Ivy 在一个版本下做多语言出版物

任何例子都是最有用的。

【问题讨论】:

    标签: c# java build ivy multilingual


    【解决方案1】:

    Ivy 作为通用依赖管理器

    你说的很对,ivy 是一个通用的依赖管理器,可以管理任何工件。

    我之前提供了一个使用 ivy 创建 ivy 存储库的示例:

    good ivy tutorial for local repository?

    这是一个将 zip 文件发布到 Nexus 的示例

    It's possible to put binary files on nexus repository?

    客户端和服务器

    我的建议是将客户端和服务器开发分开。客户端团队可能依赖于服务器团队生成的库,保持模块分离允许团队处理每个发布到您的存储库的最新稳定二进制文件。

    没有什么能阻止您创建一个依赖于客户端和服务器模块的父模块。

    存储库

    Ivy 非常适合管理小型存储库,但我建议考虑使用完整的存储库管理器,例如 NexusArtifactoryArchiva。这可以对 Internet 上可用的 jar 进行本地代理(提高性能和可靠性),并提供用于上传二进制文件以进行存储的接口。

    关于最后一点,Maven 存储库也可以存储任何类型的工件,这并不是众所周知的事实。 Maven 模块 POM 包含一个可选的“打包”标签,默认为“jar”,但可以是任何文件扩展名。

    因此,两全其美! :-)

    【讨论】:

    • 谢谢,这很有用,但是我项目中的客户端/服务器被认为是同一个项目/模块的一部分,所以我真的想要一个 ivy.xml 来处理这两者,所以它们都在一个模块下发布/版本。
    • 您使用的是 Maven 存储库吗? Maven 对每个 POM 一个工件有一个愚蠢的限制,导致父子 POM 废话......另一方面,Ivy 模块对与单个模块关联的已发布工件的数量没有限制。
    • 不,我没有使用 Maven 存储库,我在其中一台服务器上构建了自己的 (ivy) 存储库,并在那里删除了所有相关的第 3 方依赖项。经过一两天的实验,我想我现在已经接近我想要的了。正如你所说,Ivy 可以使用多个工件,这对我来说是可行的,因为我有大约 10 个 DLL 和几个 jars 要发布。
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2017-09-12
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多