2

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

我的问题是:是否有一些标准方法可以上传依赖于其他存储库的 GitHub 存储库?似乎子模块是我正在寻找的东西,但这会在每个其他项目中创建每个项目的副本吗?或者 Maven 真的是正确执行此操作的最佳/唯一方法吗?如果用户可以下载并准备好编译所有项目的依赖项,而不会严重破坏我的项目结构,我会喜欢git cloneant build

此设置的一个示例:我有 3 个 Eclipse 项目,A、B 和 C。B 和 C 在 A 的类路径中,但 A、B 和 C 都在单独的 Git 存储库中。我希望用户能够git cloneant buildA,并且在此过程中的某个时刻,自动下载 B 和 C,以便 A 编译。

4

1 回答 1

0

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

对于这个问题,我基本上看到了三种解决方案(无论构建技术如何):

  1. Git 子模块将此信息编码到 git 存储库中。这样,您就无法在没有依赖项的情况下签出您的项目。但是,正如您所说,这可能会导致多次下载相同的存储库。

  2. 另一种方法是在构建系统中编码此信息。在这种情况下,每个存储库都有一个单独的构建,而所有构建的二进制文件都放入一个公共存储库(Maven 或 Eclipse p2 存储库,甚至中央 FTP 存储都可能这样做);在构建期间从这个中央存储库中查询依赖项。

  3. 或者您可以要求您的用户确保所有必需的源项目都可用(在 Eclipse 中,您可以因此使用 Team 项目集),然后将它们一起构建。

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

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

于 2012-11-18T18:45:53.513 回答