【问题标题】:Trying to understand what gradle and maven actually do试图了解 gradle 和 maven 的实际作用
【发布时间】:2014-05-27 16:26:14
【问题描述】:

Gradle 和 Maven 究竟做了什么 eclipse 或 sts 不做的?从我读过的内容来看,它可以在 Eclipse 中轻松完成构建、运行等操作。

如果我有一个现有项目,我已经通过 tomcat 创建、构建并当前在 eclipse 中运行,我会使用 gradle 做什么?

【问题讨论】:

  • 是的,我一直在这样做,但无法理解这些教程、博客等所说的内容。我读过的每个教程都说不要在 ide 中创建项目。分别创建项目文件夹结构,运行gradle任务,然后导入eclipse。我不明白目的是什么。

标签: java eclipse maven gradle


【解决方案1】:

在您从不与任何人共享的小项目中使用 Maven 或 Gradle 并没有太多好处; IDE 也可以进行构建。但随着开发人员数量的增加和构建复杂性的增加,将构建指令与 IDE 分开变得非常有用。让我们深入研究一下。

随着开发人员的增加,您不希望每个人都必须过来使用您的 IDE 来完成构建。那真的很烦人!所以他们在自己的机器上,但是他们往往有不同的设置(他们怎么敢有不同的用户帐户名!)并且可能他们的 IDE 安装设置也有点不同。所以我们需要某种构建指令,人们可以使用它来让事情顺利进行,如果每个人都可以重复使用相同的构建指令,这样您就不会得到太多“但它在我的机器上运行!”的实例。如果这些说明足够简单,可以让团队中的新程序员快速上手,这也是非常有帮助的。

但是随着项目范围的扩大,经常发生的另一件事是它们的构建变得更加复杂。他们经常获得额外的依赖项(他们一开始并不需要高性能的日期解析器和 MIME 类型标识符,但它们已经成为必需品,你不想从头开始编写所有这些)并且意味着您必须确保在构建完成后,使用这些依赖项的正确版本。但这并不是复杂性增加的唯一方式。您也经常发现您正在使用更多自动生成的代码。您可能会发现自己经常使用 XML 模式或 WSDL,或者您可能使用 Hibernate 或 Spring,或者……嗯,有很多方法会使事情变得复杂,好吗?在这些场景中,通过各种步骤来正确、可靠地完成所有构建可能有点棘手,但是一旦你一开始就将它们编码为 Maven 之类的指令,就会使生活变得更加轻松。 (当您开始尝试处理需要许多不同子程序协同工作的项目时,它变得更加重要;其中一些很难构建即使使用 Maven 或 Gradle 或任何其他工具.)

然后有可能将工作卸载到构建服务器、自动运行测试、干净地管理依赖关系等。IDE 自身无法很好地处理这些。他们做得很合理,这通常是因为他们在幕后使用了像 Maven 这样的工具来完成繁重的工作。

tl;dr
您不必使您的代码与构建系统一起工作,但如果您这样做,它会有所帮助并且在很多方面。

【讨论】:

  • FWIW,我使用 Maven 和 Eclipse。他们大多一起工作得很好。
【解决方案2】:

Maven 和 Gradle 可以做很多 Eclipse 做不到的事情。但是,他们所做的最重要的事情是将构建和测试过程与您选择的 IDE(即 Eclipse)分离。当您在大型环境中工作时,有许多程序员,通常您无法控制他们使用的 IDE。因此,最好使用 Maven 和 Gradle 之类的工具来标准化这些任务。一本书的代码示例也是如此:作者不必提供配置任何 IDE 来执行它们的说明,而是提供 Maven 或 Gradle 文件,因此读者可以在他使用的任何 IDE 上构建和测试它们。

Maven 和 Gradle 为您提供的另一个非常重要的特性是,可以管理依赖项,而无需将可执行代码置于源代码版本控制之下。您不必将依赖的可执行代码作为项目的一部分,而是在文本文件(受源代码版本控制)上声明依赖关系,然后从存储库中获取它们。

但是,当您考虑由许多开发人员组成的团队历经数月开发的大型项目时,您可能只会看到使用 Maven 或 Gradle(甚至 Jenkins 或 Hudson)等工具的真正优势。

【讨论】:

    【解决方案3】:

    Gradle 和 Maven 是构建工具。 Maven 是第一个并且有点老,Gradle 是更新的并且重新定义了如何构建和维护项目的方式。在我看来,它也更容易使用、更具可读性和更易于维护。我更喜欢 Gradle ;)

    您使用 eclipse 或 STS(任何其他 IDE)进行开发。当你完成这个过程时,你需要提供一个已配置的工件(war、ear 等)到生产环境并在那里部署。这些工件具有明确定义的格式,并且应用程序不会在生产环境中从 eclipse 或 STS 运行。手工准备这样的工件既烦人又容易出错。

    Gradle 或 Maven 可以将构建和准备这些工件(实际上这些工具可以做的更多)的责任从你的肩上移开,它们使这个过程自动化。

    【讨论】:

    • 那么这一切都好用吗?如果我在家里有一个现有项目(对我来说,只是一个简单的 MVC/hibernate 应用程序)用于练习新技术,我将使用 gradle 做什么/如何使用?
    • 这只是开始 ;) 设置一个测试环境(例如使用 JBoss),下载并配置 gradle 并使用它准备战争工件。然后将其部署到 JBoss。试一试。另一个问题是你如何处理依赖管理?你单独下载所有的罐子?不累吗? Gradle 可以为您做到!并准备好导入eclipse项目..
    • 但是我的项目已经在eclipse中了,所以不需要导入。我已经通过命令行尝试了依赖管理,这很好,但是一旦 gradle 在那里,我从来没有运气在 eclipse 中运行项目,即使在使用 build eclipse 之后也是如此。
    • 嗯,是的。您不必导入它,但想象一下您需要与其他人共享这个项目。将 .project 和 .classpth 添加到源代码管理总是一个坏主意。而且.. 第二个开发人员使用 IntelliJ。他如何导入项目?使用 maven 或 gradle(IntelliJ 识别这两种格式),这是自动完成的,所有依赖项也会被下载。
    • 好的,谢谢。有没有办法在 eclipse 中使用 gradle 对现有项目进行依赖管理?
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多