我目前正在参加一些在线课程,以刷新我对Java和Python的了解。我还在两个不同的机器上练习使用Git和GitHub来进行版本控制(这是产生此问题的原因)。
基本上,我的学校项目所依赖的一台机器上有一些JAR文件。完成项目后,我将其推送到GitHub存储库,然后尝试在新计算机上克隆该存储库。
[当我查看克隆的存储库时,我发现JAR文件不存在。因此,经过大量挖掘,我发现我的.gitignore文件中的所有JAR文件都被忽略了(我为netbeans下载了通用的.gitignore模板)。
我决定研究为什么您可能要忽略.JAR文件。我没有找到答案,但是找到了有关如何添加.JAR文件的this question and it's accepted answer。我已经弄清楚了那部分,但是回答者还说:
“此外,我建议您将构建管理器用作Maven,Gradle或Ant以添加依赖关系。”
所以我的问题:
1。)使用第三方工具来构建应用程序与将.JAR文件添加到GitHub存储库有什么关系?
2。)默认忽略JAR文件的原因是什么?
3。)新计算机程序员应该关心使用这些工具之一吗? (我几乎不了解构建和编译之间的区别)。
诸如git,svn和cvs之类的版本控制工具是用于版本代码,而不是二进制文件,尤其是未编译的代码。
在项目源中添加jar也会使该项目变得更大。
[如果您确实想将jars“保存”到某个地方,则可以使用存储库和依赖项管理工具,例如Maven Central,Ivy或Gradle。
您开发一个项目,即您编写代码并将其提交到git。您可以使用git处理不同版本的代码,并与其他开发人员进行协作。您的代码可能具有依赖性,例如log4j或其他。您可以使用Maven / Ivy / Gradle从jar存储库中动态获取它们。这样,我可以快速克隆您的项目(源),然后从中央源获取依赖项。这样可以避免在N个不同项目中复制库。
根据定义,版本控制系统应帮助开发人员管理随时间推移对源代码所做的更改。您可以将其想象为跟踪所有更改的数据库。这使多个开发人员可以同时从事同一项目。
现在,由于我们喜欢重用代码而不是从头开始编写所有内容,因此项目通常依赖于其他项目,因此成为您项目的依赖项。但是,当您更改源代码时,库的开发人员也会更改。因此,您应该依赖于库的特定版本,以防止提取意外更改。这是Gradle和Maven等构建工具发挥作用的地方。您只需声明项目的依赖项,同时引用该依赖项的特定版本即可。
以下示例来自Maven:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
</dependency>
这些工具使跟踪依赖关系和使用的版本非常容易。
但是为什么不也将库提交到版本控制系统?
使用第三方工具构建应用程序与将.JAR文件添加到GitHub存储库有什么关系?
您限制了上传它们的必要。
默认忽略JAR文件的原因是什么?
以上原因应给您一个很好的提示。实际上,默认情况下通常会忽略很多文件,请查看模板here的集合。
新的计算机程序员应该关心使用这些工具之一吗?
如果您开始在团队中工作,您可以手动合并代码,但是您会很快注意到,这非常耗时且容易出错。尽早开始使用VCS永远不是一个错误的主意,因为据我所知,这个主题通常不是在大学教授的,而是在以后的工作中必修的。