将具有许多项目依赖项的Eclipse项目上载到GitHub的标准方法?

将具有许多项目依赖项的Eclipse项目上载到GitHub的标准方法?,eclipse,git,maven,github,Eclipse,Git,Maven,Github,我是Git和GitHub的新手,尽管我已经使用Eclipse很多年了。我想将我的几个个人Java项目上传到GitHub,但它们形成了一个复杂的依赖关系树,所有这些依赖关系都是使用Eclipse项目依赖关系引用的(即,每个项目在其类路径上都有其他Eclipse项目)。如果可能的话,我希望避免使用Maven(我在工作中使用它,但它很慢,有问题,而且很痛苦,更不用说我必须在某个地方运行自己的存储库,与GitHub分开),我更希望该解决方案允许用户在使用Eclipse或不使用Eclipse的情况下编译项

我是Git和GitHub的新手,尽管我已经使用Eclipse很多年了。我想将我的几个个人Java项目上传到GitHub,但它们形成了一个复杂的依赖关系树,所有这些依赖关系都是使用Eclipse项目依赖关系引用的(即,每个项目在其类路径上都有其他Eclipse项目)。如果可能的话,我希望避免使用Maven(我在工作中使用它,但它很慢,有问题,而且很痛苦,更不用说我必须在某个地方运行自己的存储库,与GitHub分开),我更希望该解决方案允许用户在使用Eclipse或不使用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进行编译。

如果我正确理解了这个问题,您希望将项目拆分为多个存储库,然后在git克隆或构建阶段,使用一些自动机制以传递方式获取所有依赖项。因此,您希望在配置中的某个位置对该依赖项信息进行编码

对于这个问题,我基本上看到了三种解决方案(不考虑构建技术):

  • Git子模块在Git存储库中对这些信息进行编码。这样,您就无法签出没有依赖项的项目。但是,正如您所说,这可能会导致多次下载同一存储库

  • 另一种方法是在构建系统中对该信息进行编码。在这种情况下,每个存储库都有一个单独的构建,而所有构建的二进制文件都放在一个公共存储库中(Maven或EclipseP2存储库,甚至中央FTP存储库都可以);在生成过程中,从该中心存储库查询依赖项

  • 或者,您可以要求用户确保所有必需的源项目都可用(在Eclipse中,出于这个原因,您可以使用团队项目集),然后一起构建它们

  • 根据我的经验,解决方案2或3是最常见的。如果您可以设置任何类型的存储库,这是最好的方法,因为您的所有项目都可以独立构建和重用(这对于插件项目来说是一个巨大的优势)。我确信p2存储库可以托管在SVN或Git中,因为只有HTTP请求用于下载源代码。我相信,Maven存储库也是如此,但我还没有看到这样的存储库工作


    因此,我建议您构建一个p2存储库(可以在Ant中完成,但在Maven Tycho中似乎更简单),并将项目拆分为多个存储库。

    为了简单起见,考虑使用Maven将它们组织为一个并使用单个Git存储库的所有东西。您也可以考虑使用GADLE而不是Maven,但是这些想法或多或少相同,这意味着在GADLE中也有多模块的构建。否则,您将复制信息。Git中的子模块是一种解决VCS不应该解决的问题的想法。