与所有的Java构建工具是什么?(What's with all the Java Buil

2019-07-04 23:13发布

什么是使用Ant,Maven的,并buildr点? 不会在使用的Eclipse中构建或NetBeans的正常工作? 我只是好奇的扩展构建工具的目的和好处是。

Answer 1:

  • 依赖管理 :构建工具遵循一个组件模型,它提供到哪里寻找依赖提示。 在Eclipse / Netbeans的,你必须依赖于一个JAR,你真的不知道,如果这个JAR已经更新与否。 有了这些构建工具,他们“知道”的依赖关系的更新(一般是因为你的源代码控制库了良好的整合),重新计算传递依赖,并确保一切都始终与最新版本构建。

  • 访问控制 :Java中,除了类级别的访问控制,已经没有更高的抽象。 有了这些构建工具,你可以准确地指定要取决于你和控制可见性和访问的粒度更高层次的哪些项目。

  • 自定义控制 :Eclipse的/ Netbeans的建立总是建立JAR文件。 随着自定义生成机制,你可以用额外的元数据信息,建立自己的自定义(公司内部)存档,如果你愿意的话。

  • 插件 :有许多来自制作工具。它可以建立在做各种事情的插件。 从基本的东西像生成的Javadoc的东西更不平凡的像运行测试并获得代码覆盖率,静态分析,生成报告等。

  • 交通 :一些构建系统还可以管理档案的运输-从开发系统的部署或生产系统。 所以,你可以配置的运输路线,时间安排和这样的。

看看一些持续集成服务器,例如CruiseControl的或哈德森 。 此外, Maven的功能页面提供了一些洞察到你想知道什么。



Answer 2:

在所有其他答案的上方。 主要的原因我把我的项目,可建而不用被迫使用NetBeans或Eclipse的是,它使得它这么多设置自动(连续)构建更容易。

这将是相当复杂的(比较)设立以某种方式启动日食,更新版本库中的源服务器,建立了这一切,输出发送邮件,结果并复制到某个磁盘,其中最后50基础上被存储。



Answer 3:

如果你是一个开发人员或者一个很小的群体,它似乎是一个构建系统仅仅是一个开销。 作为开发人员的数量增加了,虽然它很快变得难以跟踪所有的变化,并确保开发人员保持同步。 构建系统降低这些费用的增加速度为你的团队成长。 考虑构建所有的代码在Eclipse中,一旦你有100+的开发项目工作的问题。

一个令人信服的理由,有一个单独的构建系统是保证什么已交付给您的客户是从签入您的SCM代码的特定版本编译的。 这消除了一整类问题“在我的盒子作品”的,在我看来这样的好处是值得支持减少时间对自己的努力。 隔离构建(一上说CI服务器 )也突出了其中的部分或断裂的修改已经提交,让你有机会及早发现问题,发展问题,如:

在IDE中构建构建无论发生什么事要在包装盒上,而一个独立的构建系统将直接从SCM产生可再生的构建。 当然,这可能会在IDE中完成,但据我所知只有通过调用像Ant或Maven来处理所有的构建步骤。

然后,当然,也存在直接的利益构建系统。 模块化构建系统减少了复制粘贴的问题和处理的依赖分辨率等建设相关的问题。 将使开发人员能够专注于提供代码。 当然,每一种新的工具,介绍了自己的问题,当事人可以使它看起来编译系统是一个不必要的开销(只是谷歌的学习曲线我讨厌Maven的获得一些想法)。



Answer 4:

从IDE构建的问题是,有吨的影响构建设置。 当您使用一个构建工具中或多或少可读的形式凝结成小的组脚本或配置文件中的所有设置。 这允许在理想情况下任何人几乎没有任何手动设置到执行构建。

如果没有构建工具,可能成为几乎不可能,即使编译代码在假设一年,因为你必须反向工程的所有设置



Answer 5:

不同的特征。 例如Maven可以扫描你的依赖,并去下载它们,和它们的依赖,所以你不必。 即使对于一个中等规模的项目有可能是一个非常大的数量的依赖。 我不认为Eclipse可以做到这一点。



Answer 6:

@匿名,

  • 你为什么我认为我的,你的团队中的一员,是使用IDE所有的时间? 我可能要建立一个无头的构建服务器上的代码,行吗?
  • 你还拒绝我使用持续集成引擎的权利?
  • 我可以从一个中央存储库中取出的依赖吗? 我怎样才能做到这一点?
  • 你把我绑到一个特定的IDE? 我不能在我的很旧的笔记本电脑轻松运行Eclipse,但我会买一个新的。

也许我也应该卸载颠覆和使用补丁或者只是压缩在SFTP / FTP / Samba共享文件夹。



Answer 7:

构建工具允许您自动完成构建,没有人类的发明,如果你有一个代码库能够建立多种应用(像我们这样做),这是必不可少的。

我们希望可以肯定,我们的应用程序的每一个和每个人都可以任意的代码库更改后正确生成。 检查的最好办法是让计算机自动执行,使用Continouos集成工具。 我们只是检查代码,以及CI服务器拿起有变化并重建由变化的影响的所有模块。 如果有什么突破了负责人直接邮寄。

这是非常方便的,能够自动化的东西。



Answer 8:

为了扩大延Schauder不回答,很多这些的编译选项在某种项目文件的结束。 一个Eclipse中的罪恶是他们存储在它的所有绝对路径名的Project文件,所以你不能从一台机器复制项目文件到另一个,这可能有其不同的目录工作区。

对我来说,是自动化的最强理由的基础之上。



Answer 9:

IDE的只是一个更高的抽象层上工作。

NetBeans的nativly在NetBeans使用Ant作为其基础的构建工具,最近可以直接打开Maven项目。 因此,典型的NetBeans项目可以使用Ant编译和你的Maven项目已经是一个NetBeans项目。

正如每一个GUI VS CLI的讨论,似乎集成开发环境对于初学者来说比较容易,但一旦你的想法就变得麻烦做复杂的事情。

改变一个IDE的配置是指点击某处这是很容易为基本的东西,但对于复杂的东西,你需要找到点击正确的地方。 此外IDE中似乎隐藏importent信息。 点击一个按钮添加一个库是容易的,但你仍然可能不知道该库等。

相比之下,使用CLI不容易下手,但很快变得容易。 它可以更容易地做复杂的事情。

使用Ant或Maven意味着每个人都可以选择他/她自己的IDE工作一个代码。 告诉别人安装IDE X编译它是不是告诉“跑<建立命令>在你的shell”更多的开销。 当然还有你无法解释前者的外部工具。

综上所述,IDE使用一个构建工具本身。 在NetBeans中蚂蚁(或Maven)的情况下使用,所以你可以得到所有的优点和那些缺点。 Eclipse使用其自己的事情(据我所知),而且还可以整合ant脚本。

至于构建工具本身的Maven与Ant显著不同。 它可以下载指定的依赖最多下载Web服务器来运行你的项目点。



Answer 10:

在所有项目中,开发人员通常手动调用生成process.but它是不适合大项目,它是非常困难的跟踪需要建立什么,以何种顺序和哪些依赖有在建设过程中。因此,我们使用构建工具为我们的项目。
构建完成品种的任务,其中将在他们的日常生活中的开发者做应用工具。
他们是
1.Downloading依赖性。
2.Compiling源代码转换成二进制代码。
3.Packaging是二进制代码。
4.Running测试。
5.Deployment到生产系统。



文章来源: What's with all the Java Build tools?