【问题标题】:Mixed language source directory layout混合语言源目录布局
【发布时间】:2010-10-05 17:34:38
【问题描述】:

我们正在运行一个使用多种不同语言的大型项目:Java、Python、PHP、SQL 和 Perl。

到目前为止,人们一直在自己的私有存储库中工作,但现在我们希望将整个项目合并到一个存储库中。现在的问题是:目录结构应该如何?我们应该为每种语言设置单独的目录,还是应该按组件/项目将其分开? python/perl/java 对常见目录布局的处理能力如何?

【问题讨论】:

    标签: java python sql directory


    【解决方案1】:

    我的经验表明这种布局是最好的:

    mylib/
        src/
           java/
           python/
           perl/
           .../
        bin/
           java/
           python/
           perl/
        stage/
        dist/
    

    src 是您的来源,并且是唯一签入的内容。

    bin 是在构建期间发生“编译”的位置,并且未签入。

    stage 是您在构建期间复制内容以准备打包的位置

    dist 是您放置构建工件的位置

    我将模块/组件/库放在层次结构的顶部,因为我单独构建每个模块,并使用依赖管理器根据需要组合它们。

    当然,命名约定各不相同。但我发现这非常令人满意。

    【讨论】:

    • 在这个源码布局中,模块层是在src/层之上还是之下? IE。 mylib/src/java 还是 /src/java/mylib?
    • 我将所有模块分开,因为我分别构建它们并使用依赖管理器来组合它们。出于这个原因,我会做 mylib/src/java。
    • 已编辑以反映 lib 问题。
    【解决方案2】:

    我认为最好的办法是确保您的各种模块不依赖于位于同一目录中(即按组件分开)。很多人似乎对这个想法非常害怕,但是一套好的构建脚本应该能够自动消除任何痛苦。

    最终目标是简化基础架构的安装,然后在设置环境后真正轻松地在单个组件上工作。

    (请务必注意,我来自 Perl 和 CL 世界,我们将“模块”安装到某个全局位置,例如 ~/perl 或 ~/.sbcl,而不是在每个项目中包含每个模块,例如 Java人们会这样做。您会认为这将是一个维护问题,但最终不是一个问题。使用脚本定期更新 git 存储库(或 CPAN)中的每个模块,这确实是最好的方法。)

    编辑:还有一件事:

    项目总是有外部依赖。我的项目需要 Postgres 和正常运行的 Linux 安装。将它与版本控制中的应用程序代码捆绑在一起会很疯狂——但是在新的工作站上设置所有内容的脚本非常有帮助。

    我想我想表达的是,我不认为你应该区别对待你的内部模块和外部模块。

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多