设置javascript文件的版本。Java EE+;雄猫

设置javascript文件的版本。Java EE+;雄猫,java,javascript,css,jsp,tomcat,Java,Javascript,Css,Jsp,Tomcat,通过向javascript和css添加更新,我希望避免强制用户按Ctrl+F5来刷新缓存的js和css文件 禁用缓存也不是一个选择 为此,我想向js和css链接添加如下版本 < link href="~/CSS/file.css?MY_VERSION" rel="stylesheet" /> 理想情况下,版本必须类似于构建日期和时间的构建编号。 但是我怎样才能自动设置呢 我不想在每次更新之后手动更新所有jsp文件中的这些值。 所以问题是 maven可以将构建版本添加到jsp文

通过向javascript和css添加更新,我希望避免强制用户按Ctrl+F5来刷新缓存的js和css文件

禁用缓存也不是一个选择

为此,我想向js和css链接添加如下版本

< link href="~/CSS/file.css?MY_VERSION" rel="stylesheet" />

理想情况下,版本必须类似于构建日期和时间的构建编号。
但是我怎样才能自动设置呢

我不想在每次更新之后手动更新所有jsp文件中的这些值。 所以问题是

  • maven可以将构建版本添加到jsp文件中吗
  • 如果第一点不可能,我如何(在哪里)设置应用程序全局变量和当前日期和时间?例如,我不能将它放入servlet,因为它是用每个请求构造的
  • 这方面的最佳实践是什么?也许我的方法是完全错误的

是的,我们也做了类似的事情(对于css文件中的图像引用):


com.google.code.maven-replacer-plugin

现在,如前所述,我们使用它,但它也不是一个理想的解决方案,但我认为不存在理想的解决方案

另请参见不同浏览器中的缓存行为:

<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>maven-replacer-plugin</artifactId>
    <version>1.4.1</version>
    <executions>
        <execution>
            <id>anticache</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <includes>
                    <include>target/classes/**/*.css</include>
                </includes>
                <replacements>
                    <replacement>
                        <token>anti-cache=anti-cache-parameter</token>
                        <value>anti-cache=${maven.build.timestamp}</value>
                    </replacement>
                </replacements>
            </configuration>
        </execution>
    </executions>
</plugin>
< link href="~/CSS/file.css#anti-cache=anti-cache-parameter" rel="stylesheet" />