配置虚拟路径和热部署
<plugin>
<!-- 定位 -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.7.v20160115</version>
<configuration>
<!-- http 端口号 -->
<httpConnector>
<port>8081</port>
</httpConnector>
<!-- 工程名 -->
<webApp>
<contextPath>/${project.artifactId}</contextPath>
</webApp>
<!-- 额外监听目录 -->
<contextHandlers>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<!--设置虚拟路径 -->
<contextPath>/image</contextPath>
<resourceBase>F:\Process\UploadFile</resourceBase>
</contextHandler>
</contextHandlers>
<encoding>UTF-8</encoding>
<!-- 每隔10秒自动扫描周期——热部署 -->
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
</plugin>
如果不设置 <scanIntervalSeconds> 标签,jetty 默认情况不会自动扫描重启,执行最新代码,因此每次修改代码需要手动重启,而配置之后会自动加载修改后的代码,专业术语叫做 —— 热部署。
解决静态文件锁定问题
官方为了保证静态文件的稳定性,不允许在 jetty 启动之后修改静态文件 (如 html、css、js)。
1. 找到本地 Maven 库的路径,找到 org\eclipse\jetty\,在压缩包中打开 jetty-webapp.jar
2. 从压缩包中把 webdefault.xml 拖出来,打开找到下面代码的标签 (大概在 170 来行),将 true 改成 false ,再将这个文件拖回压缩包中。
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value>
</init-param>