在我们公司,我们有一个相对较小的IT部门。我们使用git来共享我们的项目,并跟踪它们的版本。典型的git用法。但是现在我遇到了一个问题。
我们有几个包含java项目的GIT存储库。这些项目是图书馆。其他一些项目使用它们。现在,如果我更新图书馆,我的同事将不得不拉动GIT,打开项目,将其导出到.jar并将其包含在他们的项目中。这不是我想要的。我喜欢做的只是从git添加一个库。比如,告诉IDE(Android Studio或Eclipse)只从GIT获取该库中的所有文件。
我有什么选择?
答案 0 :(得分:2)
让我分享一下我的观点。 GIT首先是一个源代码控制工具。 所以你不需要存储' git中的jar(编译库)。永远:)这会使存储库膨胀,并且不允许处理不应该是二进制的更改。
相反,在您所描述的场景中,您的同事并不与您负责的图书馆合作,因此它是git中的另一个项目。
根据您的团队/组织的规模如此之小以及您的同事和您是否处于非常不同的项目中,有以下几种选择:
将所有jar放在同一项目的不同模块中(在同一个git存储库中)。然后使用maven或gradle等工具构建项目。我不太了解android开发,但我确信这些工具可以提供很多东西。 它们都提供了自动依赖管理功能,因此如果您负责模块A并且您的队友使用同一项目的模块B,则只需声明依赖性B依赖于A' (maven和gradle都允许这样做)。 开销很明显:每次使用代码时都应编译所有内容。另一个缺点是你必须对A和B都遵循相同的发布周期,因为它们是同一个项目的一部分。 这种设置通常适用于小型组织甚至初创公司,或者如果您真正开发仅与您的同事相关的库(实际上您正在处理同一项目)。
现在在一个更复杂的环境中,让我们假设,项目A和B真的是不同的,并且由不同的人,可能是团队或部门开发。
在这种情况下,最好将A和B保存在不同的git存储库中,允许不同的发布周期等等。 你最好还是使用maven或gradle,但这一次与Nexus或Artifactory等工具结合使用。这些是您的工件(罐子)的存储库。
由于你显然来自Android世界,我能想到的最好的比喻是“google play'存储所有产品,但这次它保留不同的版本,源代码(可选)甚至javadoc如果你愿意的话。
所以现在流程应该是这样的:
您(作为项目A的维护者)使用maven或gradle编译它,测试并部署到Nexus(或Artifactory)。这意味着有一些存储jar的服务器,并且有一个可供maven或gradle使用的API。
现在,您的同事必须决定他/她应该在他的构建脚本中依赖哪个版本的项目A. maven应该配置为“寻找”#39; Nexus中的文物。在maven和gradle中都有几行配置。
因此,在这种情况下,您的同事使用他/她自己的项目B的git存储库,进行更改并编译(再次使用maven / gradle)。这两个构建工具都将下载'项目A的指定版本。
除此之外,您可以考虑使用像Jenkins这样的持续集成工具,这将进一步提高您的工作效率,但它与您的问题没有直接关系。
链接:
希望这有帮助
答案 1 :(得分:0)
由于您没有使用Android Studio但使用eclipse,这很容易。先做。文件 - >新项目 - > Android应用程序项目
是的说Android应用程序项目,但不要担心它。完成所有步骤,但不要检查创建活动'并且'创建启动器图标'
现在项目将出现在左侧。右键单击,然后将其设为Android Library Project。现在将您的代码和.git
复制到该新项目的文件夹中。现在你必须做一些目录ogranizings。
现在,其他用户可以将其导入为具有现有来源'的Android项目。并且不必执行所有这些步骤。
在依赖于此项目的项目中,您必须将其添加为依赖项库项目。