用于Java的构建工具[关闭]

问题描述 投票:-1回答:2

我目前正在参加一些在线课程,以刷新我对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。)新计算机程序员应该关心使用这些工具之一吗? (我几乎不了解构建和编译之间的区别)。

java git gradle version-control ant
2个回答
1
投票

诸如git,svn和cvs之类的版本控制工具是用于版本代码,而不是二进制文件,尤其是未编译的代码。

在项目源中添加jar也会使该项目变得更大。

[如果您确实想将jars“保存”到某个地方,则可以使用存储库和依赖项管理工具,例如Maven Central,Ivy或Gradle。

编辑

您开发一个项目,即您编写代码并将其提交到git。您可以使用git处理不同版本的代码,并与其他开发人员进行协作。您的代码可能具有依赖性,例如log4j或其他。您可以使用Maven / Ivy / Gradle从jar存储库中动态获取它们。这样,我可以快速克隆您的项目(源),然后从中央源获取依赖项。这样可以避免在N个不同项目中复制库。


1
投票

根据定义,版本控制系统应帮助开发人员管理随时间推移对源代码所做的更改。您可以将其想象为跟踪所有更改的数据库。这使多个开发人员可以同时从事同一项目。

现在,由于我们喜欢重用代码而不是从头开始编写所有内容,因此项目通常依赖于其他项目,因此成为您项目的依赖项。但是,当您更改源代码时,库的开发人员也会更改。因此,您应该依赖于库的特定版本,以防止提取意外更改。这是Gradle和Maven等构建工具发挥作用的地方。您只需声明项目的依赖项,同时引用该依赖项的特定版本即可。

以下示例来自Maven:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0</version>
</dependency>

这些工具使跟踪依赖关系和使用的版本非常容易。

但是为什么不也将库提交到版本控制系统?

  • 图书馆会占用空间并降低运行速度。克隆存储库可能需要几分钟的时间,而不是几秒钟。
  • 每次增加您依赖的库版本时,您都必须上载库的新版本。
  • 某些内部版本取决于系统。尽管对于Java程序而言并不那么重要,但是您通常会为特定系统编译C ++程序。使用构建工具,您可以仅在本地获取源代码并在计算机上构建正确的版本。

使用第三方工具构建应用程序与将.JAR文件添加到GitHub存储库有什么关系?

您限制了上传它们的必要。

默认忽略JAR文件的原因是什么?

以上原因应给您一个很好的提示。实际上,默认情况下通常会忽略很多文件,请查看模板here的集合。

新的计算机程序员应该关心使用这些工具之一吗?

如果您开始在团队中工作,您可以手动合并代码,但是您会很快注意到,这非常耗时且容易出错。尽早开始使用VCS永远不是一个错误的主意,因为据我所知,这个主题通常不是在大学教授的,而是在以后的工作中必修的。

© www.soinside.com 2019 - 2024. All rights reserved.