我正在试图找出一种方法,可以在同一时间重命名我的Web项目中的静态文件。
我需要的是能够过滤所有静态文件名以添加版本号或类似内容,以避免被浏览器缓存。
将custom.css转换为custom-1.23.css,其中1.23将是给定过滤器的值。
此行为看起来与资源插件对文件内容的作用非常相似,但我无法找到对文件名执行相同操作的方法。
有谁知道类似的东西?
非常感谢
答案 0 :(得分:1)
您可以更改服务目录而不是文件名,例如
/静态/ $ {版本} /custom.css
资源插件可以让你更改战争中的目标目录。
答案 1 :(得分:0)
1)使用任何能够复制和重命名资源的Maven插件。例如,复制重命名Maven插件。配置插件以复制要版本的所有静态资源,并将其放入目标目录中的新目录,例如target / static_versioned:
func addMoveAvatarGestures(sceneView: SCNView) {
let pan = gestureWithRootNode(target:self, action:#selector(rotateAvatar(_:)))
if let scene = sceneView.scene {
pan.rootNode = scene.rootNode
}
pan.maximumNumberOfTouches = 1
pan.minimumNumberOfTouches = 1
pan.delegate = self
self.rotationGesture = pan
sceneView.addGestureRecognizer(pan)
}
@objc func rotateAvatar(_ sender: gestureWithRootNode) {
guard let nodeToRotate = sender.rootNode else {
return
}
let translation = sender.translation(in: sender.view!)
let xToAngle = Float(self.view.frame.width) / Float(360)
let newAngleY = Float(translation.x) * xToAngle
let velocity = sender.velocity(in: sender.view!)
if (fabs(velocity.x) > fabs(velocity.y)) {
sender.setTranslation(CGPoint.zero, in: sender.view!)
nodeToRotate.eulerAngles.y += nodeExtensions.deg2rad(newAngleY)
}
}
2)配置maven-war-plugin在war文件中添加版本化的静态文件:
@SerializedName("name")
3)Maven将版本文件和原始文件都复制到结果war文件中,因此需要排除原始文件:
@JsonProperty("name")
值得一提的是,目标目录仍然具有原始文件和版本文件,但是war文件仅包含版本文件。
4)使用maven-war-plugin的过滤功能来重命名静态资源链接,以便所有链接都指向版本化的资源:
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>copy-file</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<sourceFile>src/main/webapp/css/style.css</sourceFile>
<destinationFile>target/static_versioned/css/style_${project.version}.css</destinationFile>
</fileSet>
<fileSet>
<sourceFile>src/main/webapp/js/app.js</sourceFile>
<destinationFile>target/static_versioned/js/app_${project.version}.js</destinationFile>
</fileSet>
</fileSets>
</configuration>
</execution>
</executions>
</plugin>
例如,像<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webResources>
<resource>
<directory>target/static_versioned</directory>
</resource>
</webResources>
</configuration>
</plugin>
这样的链接将重命名为<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>**/css/style.css,**/js/app.js</packagingExcludes>
<webResources>
<resource>
<directory>target/static_versioned</directory>
</resource>
</webResources>
</configuration>
</plugin>
完整示例如下:https://github.com/dmitrysobolev/maven-war-plugin-js-versioning-example