因为我正在使用 eclipse 并且只是设置了一个 dropwizard 服务器。在命令提示符下,我输入了 java -jar target/hello-world-0.0.1-SNAPSHOT.jar server hello-world.yml 并正在运行。然而,当我对我的 eclipse 文件进行更改时,例如更改 yml 文件,它不会更新。我必须 crtl+c 并重新运行我在上面输入的内容。我的问题是,是否有更快的测试方法,以便每次我更改某些内容时它都会更新,或者我只需要处理测试。谢谢。
1 回答
从 IDE 中运行
不同的 Java IDE 允许更高效的工作流。例如,在 IDE 中,您可以使用运行时配置来运行应用程序,该配置Service.main()
使用server hello-world.yml
. 这将为您节省无尽的 Maven 构建。
不幸的是,使用 Eclipse,代码更改的热交换通常很麻烦,所以我建议您考虑 Intellij,它在热交换代码方面更可靠。即便如此,热插拔也可能存在风险。
有时重启是不可避免的
话虽如此,在您的情况下,热插拔将无济于事。您正在更改仅在启动时读取的启动配置文件。除非您创建自己的动态刷新文件哈希更改机制(不建议),否则您必须重新启动才能看到更改。
一种替代方法是将您的大部分配置测试放在单元测试中,并验证您的代码是否按预期响应。
静态资产提供最佳工作流程(无需重新启动)
您可能会遇到只想更改静态资产(如 JavaScript 文件)的情况,在这种情况下,Intellij 将允许您简单地重新编译并将更改的资产复制到/target
目录中,并让 Dropwizard 立即获取它们而无需重新开始。
如果您想更进一步,您可以使用 Grunt.js 的服务,以便它持续监控src/main/resources/assets
(或类似的)更改,然后自动/target
为您更新。同样,Intellij 将自动保存焦点更改,因此这将导致您更改资产、等待一秒钟、刷新浏览器并立即查看结果的最佳工作流程。
如果您想了解有关此方法的更多详细信息(以及一般的单页 Web 应用程序开发),我不久前写了一篇涵盖Dropwizard 和 Ember Data的冗长博客文章。