Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过GIT共享库_Java_Android_Eclipse_Git - Fatal编程技术网

Java 通过GIT共享库

Java 通过GIT共享库,java,android,eclipse,git,Java,Android,Eclipse,Git,我们公司有一个相对较小的IT部门。我们使用git来共享我们的项目,并跟踪它们的版本。典型的git用法。但现在我遇到了一个问题 我们有两个包含java项目的GIT存储库。这些项目是图书馆。其他一些项目使用它们。现在,如果我要更新一个库,我的同事就必须提取GIT,打开项目,将其导出到.jar,并将其包含在他们的项目中。这不是我想要的。我更愿意做的是从git添加一个库。比如,告诉IDE Android Studio或Eclipse从GIT获取该库中的所有文件 我的选择是什么?让我分享一下我的观点。 G

我们公司有一个相对较小的IT部门。我们使用git来共享我们的项目,并跟踪它们的版本。典型的git用法。但现在我遇到了一个问题

我们有两个包含java项目的GIT存储库。这些项目是图书馆。其他一些项目使用它们。现在,如果我要更新一个库,我的同事就必须提取GIT,打开项目,将其导出到.jar,并将其包含在他们的项目中。这不是我想要的。我更愿意做的是从git添加一个库。比如,告诉IDE Android Studio或Eclipse从GIT获取该库中的所有文件

我的选择是什么?

让我分享一下我的观点。 GIT首先是一个源代码控制工具。 因此,您不需要在git中“存储”JAR编译库。Ever:这会使存储库膨胀,并且不允许处理不应该是二进制的更改

相反,在您描述的场景中,您的同事不使用您负责的库,因此这是git中的另一个项目

根据您的团队/组织的规模,以及您的同事和您是否在不同的项目中,有两种选择:

将同一项目的不同模块中的所有JAR保存在同一git存储库中。然后使用maven或gradle等工具构建项目。我对android开发了解不多,但我相信这些工具可以提供很多。 它们都提供了一个自动的依赖关系管理工具,因此,如果你负责模块A,而你的队友与同一个项目的模块B一起工作,只需声明依赖关系“B依赖于A”,maven和gradle都允许这样做。 开销是显而易见的:每次使用代码时都应该编译所有内容。另一个缺点是,A和B都必须遵循相同的发布周期,因为它们是同一项目的一部分。 这种设置通常适用于小型组织,甚至是初创企业,或者如果你真的开发了只与同事相关的库,那么实际上你正在从事同一个项目

现在,在一个更复杂的环境中,让我们假设项目a和项目B确实不同,并且由不同的人开发,可能是团队或部门

在这种情况下,最好将A和B保存在不同的git存储库中,以允许不同的发布周期等等。 您最好还是使用maven或gradle,但这次要与Nexus或Artifactory等工具结合使用。这些是您的工件JAR的存储库

因为你显然来自安卓世界,我能想到的最好的类比是“谷歌游戏”,它存储了所有的产品,但这次它保留了不同的版本、源代码(可选)甚至javadoc(如果你愿意)

那么现在的流程应该是这样的:

作为项目的维护者,您可以使用maven或gradle编译项目,测试并部署到Nexus或Artifactory。这意味着存储jar的服务器上有一个API,maven或gradle可以使用该API

现在,您的同事必须决定在构建脚本中应该依赖哪个版本的项目A。maven应该配置为在Nexus中“查找”工件。在maven和gradle中,它都有几行配置

因此,在本例中,您的同事使用他/她自己的git项目B存储库,提取更改,然后使用maven/gradle再次编译。这两个生成工具都将“下载”project A的指定版本

在此之上,您可以考虑使用像詹金斯这样的持续集成工具,这将进一步提高您的生产率,但它与您的问题没有直接关系。

链接:


希望这对您有所帮助,因为您使用的不是Android Studio,而是eclipse,这很简单。首先做。文件->新项目->Android应用程序项目

是的,android应用程序项目说了,但不用担心。完成所有步骤,但不要选中“创建活动”和“创建启动器图标”

现在项目将出现在左侧。右键单击,使其成为Android库项目。现在将代码和.git复制到新项目的文件夹中。现在,您必须执行一些目录ogranzing

现在,其他用户可以将其作为“Android porject with existing source”导入,而无需再次执行所有这些步骤


在依赖于此项目的项目中,必须将其添加为依赖项库项目。

我的选项是什么?好吧,使用依赖管理系统。或者,例如,我同意Seelenvirtuose、Maven或Gradle的观点,他们有一个像Jenkins这样的持续集成系统和一个工件库。设置可能很乏味,但值得!我们同时使用Android Studio和Eclipse。只是这些库大部分是在eclipse中制作的,而实际的应用程序是在Android Studio中制作的。我认为两者都很难使用。你可以 将您的库项目转换为android studio项目,并将它们作为库导入,这比使用eclipse更困难,但仍然可以做到。然后,您可以使用git管理库,并使用常用的推/拉功能