混合语言源目录布局

时间:2009-02-05 16:57:16

标签: java python sql directory

我们正在运行一个包含多种语言的大型项目:Java,Python,PHP,SQL和Perl。

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

2 个答案:

答案 0 :(得分:6)

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

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

src是您的来源,也是唯一签到的。

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

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

的地方

dist是您放置构建工件的地方

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

当然,命名惯例各不相同。但我发现这个工作非常令人满意。

答案 1 :(得分:2)

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

最终目标是使安装基础架构变得容易,然后在设置环境后轻松地在单个组件上工作。

(重要的是要注意我来自Perl和CL世界,在那里我们将“模块”安装到某个全局位置,比如〜/ perl或〜/ .sbcl,而不是像每个项目那样包含每个模块,比如Java你会认为这会是一个维护问题,但它最终不会成为一个问题。有一个脚本可以定期更新你的git存储库(或CPAN)中的每个模块,这确实是最好的方法。)

编辑:还有一件事:

项目始终具有外部依赖关系。我的项目需要Postgres和Linux安装。将它与版本控制中的应用程序代码捆绑在一起会很疯狂 - 但是在新工作站上安装所有内容的脚本非常有用。

我想我想说的是,或许是一种迂回的方式,我认为你不应该对待内部模块与外部模块不同。

相关问题