用Maven处理大型Java服务器项目

用Maven处理大型Java服务器项目,java,maven,build,Java,Maven,Build,我以前从未从事过Java服务器开发,我需要构建一个包含大约10个库的大型服务器项目 该项目已经使用Maven进行构建。 我已经设置了构建过程,现在我进入了开发部分。(需要更改代码的一小部分) 问题 我习惯于5-10秒的建设(不重建整个项目)。我怎样才能用maven做到这一点? 用例:编写一行代码并进行测试 如果maven无法做到这一点,我可以用其他方式吗? 否则,每次我需要测试代码时都要等待3-5分钟,这是一件非常痛苦的事情 编辑: 有上百个链接库(jar),但工作区中有大约10个项目具有依赖关

我以前从未从事过Java服务器开发,我需要构建一个包含大约10个库的大型服务器项目

该项目已经使用Maven进行构建。 我已经设置了构建过程,现在我进入了开发部分。(需要更改代码的一小部分)

问题
我习惯于5-10秒的建设(不重建整个项目)。我怎样才能用maven做到这一点?
用例:编写一行代码并进行测试

如果maven无法做到这一点,我可以用其他方式吗? 否则,每次我需要测试代码时都要等待3-5分钟,这是一件非常痛苦的事情

编辑:

有上百个链接库(jar),但工作区中有大约10个项目具有依赖关系。mvn安装大约需要5分钟或更长时间。项目中有数千个.java文件和大量资源

根据我的经验,构建速度主要受硬件的影响,尤其是磁盘驱动器的速度。构建工具实际上并没有起到很大的作用。Maven应该完全能够处理一个包含10个库的项目


我当前的项目在其类路径上大约有92个JAR文件。减去一些仅用于测试目的,减去一些用于构建在多个JAR文件中的库,剩下的库将超过10个。不过,构建只需几秒钟即可完成。测试运行大约需要两分钟(但有一个测试需要大约一半的时间。

我正在使用JBoss plugin for Eclipse、Maven plugin for Eclipse和Eclipse进行Web开发,在Maven中我设置了自动部署。我的总体部署时间约为1分钟。如果您想进一步减少,请寻找热部署

检查这个

根据我的观察,如果您在一个文件中更改了几行,那么maven将只编译该文件,但是您必须启动maven构建过程

我认为库的数量不应该是问题。它们只下载一次,然后存储在.m2文件夹中。在我的情况下,它每天早上下载,或者第一次构建,然后下载量最少。我已经使用了10多个库


这将是一次性设置开发环境(意味着安装、配置工具),然后它将顺利进行。

用于热部署的工具可以在不重新启动服务器的情况下完成。否则,您将需要重新启动它,我认为10个库都没有问题


我通常使用7或8,您只需等待服务器重新启动,因为部署是自动管理的。如果您将项目划分为多个模块,则此插件只负责编译您需要的内容并进行部署。

如果您的项目划分为具有父子关系的模块,则可以ave maven只构建了孩子们的一个子集。请参阅另一个SO问题的答案:

到J2EE世界。我可以提出几种类似黑客的解决方法,但不作为完整的指南:

  • 首先,hdd速度非常重要,如果你能得到ssd,那就更好了 那太好了

  • FS/OS很重要。对我来说,在相同的硬件上,ubuntu+ext4的构建速度比windows+ntfs快30-40%

  • 在离线模式下工作(不检查外部依赖项更新)、在活动开发期间禁用测试等黑客行为可能有助于加快开发速度,但也可能会让您措手不及

  • 如果您在一个模块中处理一个特定功能,那么您只能构建该模块,然后构建ear模块进行部署

  • 充分利用ide的潜力。使用热插拔。尝试让它部署分解的工件,这样你甚至不需要maven和创建jar/wars/ears。IntelliJ IDEA是我个人最喜欢的。Eclipse也可以

  • 禁用防病毒(有些人喜欢检查你创建的每个类文件)。如果你在公司环境中,请驱魔师帮你做这件事


  • 最有效的方法不是在本地依赖Maven,而是让continuous integration server覆盖您:只对要更改(或实现)的代码行运行一个测试,并使用IDE构建而不是Maven

    然后提交到一个存储库,该存储库会自动为每次提交触发Jenkins构建。所有构建和测试时间(对于完整的测试套件)然后在持续集成服务器上使用,而您已经可以实现下一个功能。只有在测试成功后,集成服务器才会将您的更改推送到存储库中


    互联网上有大量关于如何使用Jenkins、Maven、Git来介绍此工作流的教程。

    除了Maven,您还使用了哪些其他工具?到底是什么花费了这么长的时间?是Maven构建还是在应用服务器上部署构建的工件?@jarnbjo我在问题中添加了一些详细信息。我不是故意的链接库。有上百个链接库(jar),但工作区中大约有10个项目具有依赖关系。mvn安装大约需要5分钟或更长时间。该项目中有数千个.java文件和大量资源。您是否也在运行测试?10个项目的测试一定需要很长时间,如果禁用测试,您将看到它非常快。测试被禁用。ti在公司环境中,我会计算时间损失并要求新的硬件。我会说,这是一个投资问题。同样,在开发过程中,不需要执行
    mvn install
    。有一些插件会考虑更改和部署的内容只为您更改了
    .class
    文件本身。所有操作都是通过单击Eclipse“build All”按钮完成的,这比对pac进行完整的
    mvn安装要便宜得多