我是Git和GitHub的新手,虽然我多年来一直在使用Eclipse。我想将我的几个个人Java项目上传到GitHub,但是它们构成了一个复杂的依赖树,它们都是使用Eclipse项目依赖项引用的(即每个项目在其类路径上都有其他Eclipse项目)。我想尽可能避免使用Maven(我在工作中使用它,但它很慢,有错误,并且PAIN,更不用说我必须在某个地方运行我自己的存储库,与GitHub分开),而且我会如果解决方案允许用户使用或不使用Eclipse(可能使用Ant构建文件或某些程序)来编译项目,则更喜欢。
我的问题是:是否有一些标准方法可以上传GitHub存储库并依赖其他存储库?看起来像子模块是我正在寻找的,但是它会在每个其他项目中创建每个项目的重复吗?或者Maven真的是最好/唯一的方法吗?如果用户只需git clone
或ant build
并且已经下载了所有项目的依赖项并准备编译,我就会喜欢它,而不会严重破坏我的项目结构。
此设置的一个示例:我有3个Eclipse项目,A,B和C. B和C在A的类路径中,但A,B和C都在单独的Git存储库中。我希望用户能够git clone
和ant build
A,并且在此过程中的某个时刻,会自动下载B和C,以便A编译。
答案 0 :(得分:0)
如果我正确理解了这个问题,您希望将项目拆分为多个存储库,然后使用一些自动机制在git clone或构建阶段期间传递所有依赖项。因此,您希望在配置中的某处对此依赖关系信息进行编码。
我基本上看到了这个问题的三个解决方案(无论构建技术如何):
Git子模块在git存储库中对此信息进行编码。这样,您无法在没有依赖项的情况下签出项目。但是,如您所述,这可能会导致多次下载相同的存储库。
另一种方法是在构建系统中对此信息进行编码。在这种情况下,每个存储库都有一个单独的构建,而所有构建的二进制文件都放在一个公共存储库(Maven或Eclipse p2存储库,甚至是中央FTP存储库)中;在构建期间从此中央存储库查询依赖项。
或者您可以要求您的用户确保所有必需的源项目都可用(在Eclipse中,您可以出于此原因使用Team项目集),然后将它们一起构建。
根据我的经验,解决方案2或3是最常见的解决方案。如果您可以设置任何类型的存储库,那么这是最好的方法,因为所有项目都可以独立构建和重用(这对于插件项目来说是一个巨大的优势)。我确信p2存储库可以托管在SVN或Git中,因为只有HTTP请求用于下载源。我相信,Maven存储库也可以这样做,但我还没有看到这样的存储库工作。
所以,我建议您构建一个p2存储库(可以在Ant中完成,但在Maven Tycho中看起来更简单),并将项目拆分为多个存储库。