据我所知,正如文档所建议的那样,在运行时mvn jetty:run
,没有构建任何工件。相反,使用它自己的内部机制,maven jetty 插件将从target\classes
运行目标在不必构建到 WAR 中的 webapp 上运行。相反,Jetty 从其来源部署 webapp。它在 Maven 默认项目位置中查找 webapp 的组成部分,尽管您可以在插件配置中覆盖这些部分。例如,默认情况下它会查找:
- ${project.basedir}/src/main/webapp 中的资源
- ${project.build.outputDirectory} 中的类
- ${project.basedir}/src/main/webapp/WEB-INF/ 中的 web.xml
该插件会自动确保在部署之前重建类并保持最新。如果您更改了类的源并且您的 IDE 会在后台自动编译它,则插件会选择更改的类。
您无需将 webapp 组装成 WAR,从而在开发周期中节省时间。调用后,您可以将插件配置为连续运行,扫描项目中的更改并在必要时自动执行热重新部署。您所做的任何更改都会立即反映在 Jetty 的运行实例中,让您快速从编码跳转到测试,而不是经历以下循环:编码、编译、重新组装、重新部署、测试。
...并且(可能)使用来自 maven repo 的依赖项:
*注意
正在运行的 Jetty 实例及其部署的 webapp 的类路径由 Maven 管理,可能与您期望的不完全一致。例如:一个 webapp 的依赖 jar 可能是通过本地存储库引用的,而不是 WEB-INF/lib 目录。
运行插件时,也可以在日志中观察到上面提到的一些信息(运行 maven,-X
又名调试输出 on,提供更多信息):
[INFO] Configuring Jetty for project: vaadin-app
[INFO] webAppSourceDirectory not set. Trying src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = D:\tmp\test\vaadin-app\target\classes
[DEBUG] Starting Jetty Server ...
[INFO] Context path = /
[INFO] Tmp directory = D:\tmp\test\vaadin-app\target\tmp
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[DEBUG] Adding artifact vaadin-server-8.0.6.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-sass-compiler-0.9.13.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact sac-1.3.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact flute-1.3.0.gg2.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-shared-8.0.6.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact jsoup-1.8.3.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact gentyref-1.2.0.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-push-8.0.6.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact atmosphere-runtime-2.4.5.vaadin2.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-slf4j-jdk14-1.6.1.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-client-compiled-8.0.6.jar with scope compile for WEB-INF/lib
[DEBUG] Adding artifact vaadin-themes-8.0.6.jar with scope compile for WEB-INF/lib
[INFO] web.xml file = null
[INFO] Webapp directory = D:\tmp\test\vaadin-app\src\main\webapp
[INFO] Started Jetty Server
但是,如果您想构建和部署打包战争或爆炸战争,您可以使用jetty:run-war
:
这个目标首先将您的 webapp 打包为 WAR 文件,然后将其部署到 Jetty。如果您设置非零 scanInterval,Jetty 会监视您的 pom.xml 和 WAR 文件;如果其中任何一个发生变化,它就会重新部署战争。
...和/或jetty:run-exploded
:
run-exploded 目标首先将您的 webapp 组装成一个展开的 WAR 文件,然后将其部署到 Jetty。如果您设置非零 scanInterval,Jetty 会监视您的 pom.xml、`WEB-INF/lib、WEB-INF/ 和 WEB-INF/web.xml 以进行更改并在必要时重新部署。