1

我正在使用 maven-war-plugin 过滤 WEB-INF 中的一些资源。主要是静态的东西,比如:

var url = ${contextRoot}/save.json;

或者

<link href="static/css/layout-${buildNumber}.css"/>

一切都非常好。我的问题是它创造了一个开发噩梦。我通常热部署到本地 tomcat,我的 IDE 处理将更改(保存时)复制到目标目录。但是当这种情况发生时,我最终会在我的文件中得到一个文字 ${property} 而不是它最初被战争插件替换的东西。我更愿意即时测试视图/静态资源更改,而不必为每次更改重新部署。

我已经弄乱了 tomcat 插件来运行它,但是当我使用它时,除非我使用它来部署,否则不会发生资源过滤,在这种情况下我失去了热插拔功能。

我正在使用 spring,我可以很好地使用主题,过滤主题属性,然后使用它来替换我视图中的值。但是 js/css/其他静态的东西呢?

有没有办法让战争插件“即时过滤”?谁能推荐一种更好的方法来完成我正在尝试做的事情?我觉得我已经关注它太久了,并且对此事有一些狭隘的看法。

4

2 回答 2

2

如果您将 eclipse 与 m2e 和 m2e-wtp 一起使用,您可以获得即时 Web 资源过滤。这在这里解释: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 )

于 2012-03-16T13:54:33.200 回答
1

最后,我保留了相同的方法,但改变了实现这一目标的方法。

对于 Javascript,我将任何需要过滤的内容放入一个常量文件中:

// Constants.js

var BASE_URL = '${contextRoot}';

这背后的原因是该Constants.js文件将很少被修改,并且避免了动态重新部署该文件的问题。

我的另一个示例是${buildNumber}用于避免跨部署缓存浏览器资源。我发现将内部版本号附加到查询字符串也同样有效:

<link href="static/css/layout.css?${buildNumber}"/>
于 2012-02-06T14:45:10.777 回答