Java 试图了解gradle和maven到底在做什么

Java 试图了解gradle和maven到底在做什么,java,eclipse,maven,gradle,Java,Eclipse,Maven,Gradle,Gradle和Maven到底做了什么,eclipse或sts没有?从我所读到的内容来看,它的构建、运行等都可以在eclipse中轻松完成 如果我有一个已经通过tomcat在eclipse中创建、构建和运行的现有项目,我会使用gradle做什么?gradle和Maven是构建工具。Maven是第一个,而且有点老,Gradle是新的,并且重新定义了一种如何构建和维护项目的方式。在我看来,它也更容易使用,更可读,更容易维护。我更喜欢格拉德尔;) 您可以使用eclipse或STS(任何其他IDE)进行开

Gradle和Maven到底做了什么,eclipse或sts没有?从我所读到的内容来看,它的构建、运行等都可以在eclipse中轻松完成


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

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

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


Gradle或Maven可以从您的肩上承担构建和准备这些工件的责任(事实上,这些工具可以做得更多),它们使这一过程自动化。

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

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


然而,当你在大型项目中思考时,你可能只会看到使用Maven或Gradle(甚至Jenkins或Hudson)等工具的真正优势,这些项目是由许多开发人员组成的团队经过数月开发的。

在一个你从未与任何人分享的小项目中使用Maven或Gradle并没有多大好处;IDE也可以进行构建。但是随着开发人员数量的增加和构建复杂性的增加,将构建指令与IDE分离变得非常有用。让我们深入了解一下这些

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

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

然后有可能将工作转移到构建服务器上,自动运行测试,干净地管理依赖关系,等等。IDE本身不能很好地处理这些问题;如果他们能合理地完成这项工作,通常是因为他们在幕后使用像Maven这样的工具来完成繁重的工作

tl;dr

您不必让代码与构建系统一起工作,但如果您这样做,并且在许多方面都会有所帮助。

是的,我一直在这样做,但这些教程、博客等所说的话毫无意义。我读过的每个教程都说不要在ide中创建项目。分别创建项目文件夹结构,运行gradle任务,然后导入eclipse。我不明白它的目的是什么。那么这就是它的全部好处吗?如果我在家里有一个用于实践新技术的现有项目(对我来说,只是一个简单的MVC/hibernate应用程序),我会用gradle做什么/如何做?这只是开始;)设置一个测试环境(以JBoss为例),下载并配置gradle,并使用它准备war工件。然后将其部署到JBoss。试试看。另一个问题是如何处理依赖关系管理?你要分别下载所有的jar吗?这不是很累吗?格雷德尔可以帮你!和p