-1

我以前从未从事过 Java Server 开发工作,我需要构建一个包含大约 10 个库的大型 Server 项目。

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

问题
我习惯于 5 - 10 秒的构建时间(不重建整个项目)。我怎样才能用 Maven 实现这一目标?
用例:编写一行代码并进行测试。

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

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

4

6 回答 6

1

像JRebel这样的热部署工具可以在不重新启动服务器的情况下完成这项工作。否则你需要重新启动它,我认为 10 个库没有问题。

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

于 2013-07-11T15:17:17.043 回答
1

最有效的方法不是在本地依赖 Maven,而是让持续集成服务器覆盖您:只对您想要更改(或实施)的代码行运行一个测试。并使用您的 IDE 构建而不是 Maven。

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

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

于 2013-07-11T19:36:43.190 回答
0

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

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

于 2013-07-11T15:13:29.710 回答
0

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

检查这个Eclipse + Tomcat - 直接从工作区服务 webapp

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

我认为图书馆的数量应该不是问题。它们只下载一次,然后存储在 .m2 文件夹中。就我而言,它每天早上或首次构建时都会下载,然后下载量很少。我曾与 10 多个图书馆合作过。

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

于 2013-07-11T15:14:08.250 回答
0

如果你的项目被分成具有父子关系的模块,你可以让 maven 只构建子模块的一个子集。查看其他 SO 问题的答案:如何构建子项目?

于 2013-07-11T15:36:39.303 回答
0

欢迎来到J2EE 世界。我可以提出几个 hack-ish 解决方法,不要作为完整的指南:

  1. 首先,硬盘速度很重要,如果你能得到ssd,那就太好了。

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

  3. 诸如在离线模式下工作(不检查外部依赖项更新)之类的技巧,在主动开发期间禁用测试可能有助于加快速度,但也可能会让您大吃一惊。

  4. 如果您在一个模块中处理一项特定功能,则可以仅构建该模块,然后构建您的 ear 模块以进行部署

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

  6. 禁用防病毒软件(其中一些喜欢检查您创建的每个类文件)。如果您在公司环境中,请让驱魔人为您做

于 2013-07-11T15:56:16.750 回答