什么';所有的Java构建工具都是什么?

什么';所有的Java构建工具都是什么?,java,maven-2,ant,build-automation,buildr,Java,Maven 2,Ant,Build Automation,Buildr,使用ant、maven和buildr有什么意义?使用内置eclipse或netbeans不是很好吗?我只是好奇扩展构建工具的目的和好处是什么。不同的功能。例如,Maven可以扫描您的依赖项并下载它们,以及它们的依赖项,这样您就不必这样做。即使是中等规模的项目,也可能存在大量的依赖关系。我认为Eclipse做不到这一点。 依赖关系管理:构建工具遵循组件模型,该模型提供了在何处查找依赖关系的提示。在Eclipse/Netbeans中,您必须依赖一个JAR,并且您不知道这个JAR是否已经更新。使用这些

使用ant、maven和buildr有什么意义?使用内置eclipse或netbeans不是很好吗?我只是好奇扩展构建工具的目的和好处是什么。

不同的功能。例如,Maven可以扫描您的依赖项并下载它们,以及它们的依赖项,这样您就不必这样做。即使是中等规模的项目,也可能存在大量的依赖关系。我认为Eclipse做不到这一点。

  • 依赖关系管理:构建工具遵循组件模型,该模型提供了在何处查找依赖关系的提示。在Eclipse/Netbeans中,您必须依赖一个JAR,并且您不知道这个JAR是否已经更新。使用这些构建工具,它们“知道”依赖项中的更新(通常是因为与源代码管理存储库的良好集成),重新计算可传递的依赖项,并确保始终使用最新版本构建所有内容

  • 访问控制:Java除了类级访问控制之外,没有更高的抽象性。使用这些构建工具,您可以精确地指定要依赖于您的项目,并在更高的粒度级别上控制可见性和访问

  • 自定义控件:Eclipse/Netbeans构建总是构建JAR文件。使用自定义构建机制,如果您愿意,您可以使用额外的元数据信息构建自己的自定义(公司内部)归档

  • 插件:构建工具附带了多种插件,可以在构建过程中执行各种操作。从生成Javadocs这样的基本功能,到运行测试、获取代码覆盖率、静态分析、生成报告等更简单的功能

  • 传输:一些构建系统还管理从开发系统到部署或生产系统的归档传输。因此,您可以配置传输路由、时间表等

请看一些连续集成服务器,如或。此外,还提供了一些您想要了解的信息。

@anonymous

  • 你为什么认为我是会员 您的团队中,是否始终使用IDE 时间我可能想要构建代码 在无头构建服务器上,是这样吗 好吗
  • 你也会拒绝我的权利吗 使用连续积分 引擎
  • 我可以从中央存储库获取依赖项吗?我该怎么做
  • 你能把我和一个特定的IDE联系起来吗?我不能在我的旧笔记本上轻松运行Eclipse,但我会买一台新的

也许我还应该卸载subversion,并在sftp/ftp/Samba共享上使用补丁或zip文件夹。

从IDE构建的问题是,有大量的设置会影响构建。当您使用构建工具时,所有设置都会以或多或少可读的形式压缩为一小部分脚本或配置文件。这使得在理想情况下,任何人都可以在几乎没有任何手动设置的情况下执行构建


如果没有构建工具,在一年内编译代码几乎是不可能的,因为你必须在所有其他答案的基础上对所有设置进行反向工程。我在不被迫使用NetBeans或Eclipse的情况下保持项目的可构建性的主要原因是它使设置自动(和连续)构建变得更加容易


相比之下,设置一台服务器,以某种方式启动eclipse、从存储库更新源代码、全部构建、发送一封带有结果的邮件并将输出复制到存储最后50个构建的磁盘上的某个位置是相当复杂的。

要扩展Jens Schauder的答案,许多构建选项最终都会出现在某种.project文件中。Eclipse的一个缺点是,它们将绝对路径名存储在所有的项目文件中,因此您无法将项目文件从一台机器复制到另一台机器,而这台机器的工作区可能位于不同的目录中


对我来说,最大的原因是自动构建。

IDE只在更高的抽象层上工作

NetBeans本机使用Ant作为其底层构建工具,最近可以直接在NetBeans中打开maven项目。因此,典型的NetBeans项目可以用ant编译,而maven项目已经是NetBeans项目了

与每一次GUI vs CLI讨论一样,IDE对于初学者来说似乎更容易,但一旦你有了这个想法,做复杂的事情就会变得很麻烦

使用IDE更改配置意味着单击某个地方,这对于基本的东西很容易,但是对于复杂的东西,您需要找到正确的单击位置。此外,IDE似乎隐藏了重要的信息。单击按钮添加库很容易,但您可能仍然不知道库在哪里,等等

相反,使用CLI一开始并不容易,但很快就会变得容易。它允许更容易地做复杂的事情

使用Ant或Maven意味着每个人都可以选择自己的IDE来编写代码。告诉某人安装IDEX来编译它要比告诉“在shell中运行”开销大得多。当然,你不能向外部工具解释前者

总之,IDE本身使用一个构建工具。在使用NetBeans时,使用Ant(或Maven),这样您就可以获得这些工具的所有优点和缺点。Eclipse使用自己的东西(据我所知),但也可以集成ant脚本


至于构建工具本身,Maven与Ant有着显著的不同。它可以下载指定的依赖项,甚至可以下载web服务器来运行您的项目。

构建工具允许您自动进行构建,而无需人工发明,如果您有一个能够构建许多应用程序的代码库(如我们所做的),这一点至关重要

我们希望确保我们的每一个应用程序在任何合作之后都能正确构建