我目前正在参加一些在线课程,以刷新我对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。)新计算机程序员是否应该关心使用这些工具之一? (我几乎不了解以任何方式构建和编译之间的区别。)
答案 0 :(得分:1)
诸如git,svn和cvs之类的版本控制工具仅用于版本代码,而非二进制文件,尤其是非编译代码。
在项目源中添加jar也使该项目更大。
如果您确实想将Jars“保存”在某个地方,则可以使用存储库和依赖项管理工具,例如Maven Central,Ivy或Gradle。
您开发一个项目,即编写代码并将其提交到git。您可以使用git处理不同版本的代码,并与其他开发人员进行协作。您的代码可能具有依赖性,例如log4j或其他。您可以使用Maven / Ivy / Gradle从jar存储库中动态获取它们。这样,我可以快速克隆您的项目(源),然后从中央源获取依赖项。这样可以避免在N个不同项目中复制库。
答案 1 :(得分:1)
根据定义,版本控制系统应协助开发人员管理随时间推移对源代码所做的更改。您可以将其想象为跟踪所有更改的数据库。这样一来,多个开发人员就可以同时从事同一项目。
现在,由于我们喜欢重用代码而不是从头开始编写所有内容,因此项目通常依赖于其他项目,因此成为您项目的依赖项。但是,当您更改源代码时,库的开发人员也会更改。因此,您应该依赖于库的特定版本,以防止提取意外更改。这是Gradle和Maven等构建工具发挥作用的地方。您只需在引用项目依赖项的特定版本时声明项目的依赖项即可。
以下示例来自Maven:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
</dependency>
这些工具使跟踪您的依赖项和使用的版本非常容易。
但是为什么不将库也提交到版本控制系统呢?
使用第三方工具构建应用程序与将.JAR文件添加到GitHub存储库有什么关系?
您限制了上传它们的需要。
默认忽略JAR文件的原因是什么?
以上原因应给您一个很好的提示。实际上,默认情况下,通常会忽略很多文件,请查看模板here的集合。
新的计算机程序员应该关心使用这些工具之一吗?
如果您开始在团队中工作,则可以手动合并代码,但是您会很快注意到它非常耗时且容易出错。尽早开始使用VCS永远不是一个错误的主意,因为据我所知,这个主题通常不是在大学教授的,而在以后的工作中是必须的。