我正在使用maven-war-plugin来过滤WEB-INF中的一些资源。主要是静态的东西,如:
var url = ${contextRoot}/save.json;
或
<link href="static/css/layout-${buildNumber}.css"/>
一切都很有效。我的问题是它创造了一个发展的噩梦。我通常热部署到本地tomcat,我的IDE处理将更改(保存时)复制到目标目录。但是当发生这种情况时,我最终会在我的文件中使用文字$ {property},而不是最初由war插件替换它。我更愿意动态测试视图/静态资源更改,而不必为每次更改重新部署。
我已经乱搞了tomcat插件来运行它,但是当我使用它时,除非我使用它进行部署,否则不会发生资源过滤,在这种情况下我会失去热插拔功能。
我正在使用spring,我可以使用主题,过滤主题属性,然后使用它来替换视图中的值。但是js / css /其他静态的东西呢?
有没有办法让战争插件“即时过滤”?任何人都可以推荐一种更好的方式来完成我想要做的事情吗?我觉得我已经看了很长时间,并对此事有一些洞察力。
答案 0 :(得分:2)
如果你使用m2e和m2e-wtp的eclipse,你可以获得即时的网络资源过滤。 这在此解释:https://community.jboss.org/en/tools/blog/2011/05/03/m2eclipse-wtp-0120-new-noteworthy
并在那里演示:http://bit.ly/wGcD4j
请注意,在此视频中,Maven Profile Management UI来自JBoss Tools 3.3.0.Beta1(http://docs.jboss.org/tools/whatsnew/maven/maven-news-3.3.0。 Beta1.html)
答案 1 :(得分:1)
最后我保留了相同的方法,但改变了我的方法来实现这一目标。
对于Javascript,我将需要过滤的任何内容放入一个Constants文件中:
// Constants.js
var BASE_URL = '${contextRoot}';
这背后的原因是Constants.js
文件很少会被修改,并避免在运行中重新部署该文件的问题。
我的另一个例子是使用${buildNumber}
来避免跨部署的浏览器资源缓存。我发现将构建号附加到查询字符串也是如此:
<link href="static/css/layout.css?${buildNumber}"/>