我创建了一个s3-webcache-maven-plugin,它将图像、javascript、css 和任何其他静态资源从 src/main/webapp 上传到给定的 S3 Bucket,源代码可在https://github.com/aro1976获得/aws 父级。
此外,它还会创建一个名为WEB-INF/s3-webcache.xml的清单,servlet 过滤器可以使用该清单将请求从您的 Web 服务器重定向到S3或CloudForge。
您需要将以下配置放入 <build><plugins>:
<plugin>
<groupId>br.com.dynamicflow.aws</groupId>
<artifactId>s3-webcache-maven-plugin</artifactId>
<version>0.0.2-SNAPSHOT</version>
<configuration>
<accessKey>${s3.accessKey}</accessKey>
<secretKey>${s3.secretKey}</secretKey>
<bucketName>${s3.bucketName}</bucketName>
<hostName>${cloudForge.cname}</hostName><!-- hostName is optional -->
<includes>
<include>**/*.gif</include>
<include>**/*.jpg</include>
<include>**/*.tif</include>
<include>**/*.png</include>
<include>**/*.pdf</include>
<include>**/*.swf</include>
<include>**/*.eps</include>
<include>**/*.js</include>
<include>**/*.css</include>
</includes>
<excludes>
<exclude>WEB-INF/**</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>upload</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
</plugin>
此时需要includes和excludes等配置参数,可以使用传统的maven regex。
存储在S3的文件名被它们的SHA-256摘要替换,为了允许非常长的缓存头和多战争 otimization,这就是我创建 WebCacheFilter 的原因,它非常简单,并用 SHA 转换传统文件名- 256摘要对应。
检查https://github.com/aro1976/aws-parent/tree/aws-parent-0.0.1/aws-examples/s3-webcache-example上的示例项目,特别是文件 pom.xml(带有插件配置) 和 web.xml(带有过滤器配置)。