花了4个小时后,我让它工作了!但不是一般情况,因为基于新 Spring 3.x 系列的解决方案。
对于一般案例解决方案,您必须实现自己的 servlet,例如著名的博客文章:http ://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html
我不喜欢编写代码,但喜欢配置已经预构建的组件!
所以首先我将所有 URL 的请求处理程序更改为org.springframework.web.servlet.DispatcherServlet
:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在我有之前:
<url-pattern>*.htm</url-pattern>
<url-pattern>*.xml</url-pattern>
因此*.js
,由默认容器(JBoss)servlet 管理*.css
的*.png
文件和任何选项进一步无效......
接下来我使用 Spring 3.0 的特性<mvc:resources>
( xmlns:mvc="http://www.springframework.org/schema/mvc"
) 和file:
资源类型:
<mvc:resources mapping="/css/**" location="file:/home/user/devel/proj/src/main/webapp/css/"/>
<mvc:resources mapping="/images/**" location="file:/home/user/devel/proj/src/main/webapp/images/"/>
<mvc:resources mapping="/js/**" location="file:/home/user/devel/proj/src/main/webapp/js/"/>
每当我在浏览器中保存.js
或.css
归档和刷新网页时,我都会获得新内容!
因此,将静态内容部署时间从 2 分钟减少到 1 秒!!!
更新切换到 Tomcat 7 后,我配置上下文/opt/apache-tomcat-7.0.40/conf/Catalina/localhost/CTXNAME.xml
:
<Context docBase="/home/user/devel/proj-dev/src/main/webapp"
reloadable="true">
<Resources className="org.apache.naming.resources.VirtualDirContext"
extraResourcePaths="/WEB-INF/classes=/home/user/devel/proj-dev/target/classes,/WEB-INF/lib=/home/user/devel/proj-dev/target/proj/WEB-INF/lib"/>
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="/home/user/devel/proj-dev/target/classes;/home/user/devel/proj-dev/target/proj/WEB-INF/lib"/>
<JarScanner scanAllDirectories="true"/>
</Context>
根据:
现在 JS/CSS/JSP 文件F5
在浏览器中更新。为了使用新的.class
调用mvn compile
。引导调用mvn package