fingerprint maven plugin
1.0.0
指纹并优化Web资源。
该插件执行多个优化:
在此过程中,插件计算文件校验和将其预先添加到文件名。该文件名的所有链接都将更改为指纹版本。原始文件将被删除。指纹用于改善Web资源缓存。如果未更改文件校验和,则名称将相同,并且可以安全地添加最大到期标头。一旦更改了文件内容,也将更改校验和。该插件将(递归)过滤(递归)源目录,使用下面的模式检测任何资源,然后将结果(如果需要)复制到目标目录。
以下模式用于检测有资格的指纹资源:
<link[^>]+href=["'](.*?)["'][^>]*>["']([^s]*?.js)["']<img[^>]+src=["'](.*?)["'][^>]+>url(s*["']?(.*?)["']?s*)<c:url[^>]+value="(.*?)"[^>]+>指纹识别后,可以安全地添加最大到期标头。
要求
<img src="/img/test.png"><img src="test.png"><img src="${pageContext.request.contextPath}/img/test.png"><img src="${ pageContext.request.contextPath }/test.png"><img src="/img/test.png"><img src="<c:if test="${var}">/img/test.png</c:if>"<img src="${seome.variable}/img/test.png"在HTML降低期间:
pre 。type="text"将从input标签中删除,因为它的默认类型。 < plugin >
< groupId >com.aerse.maven</ groupId >
< artifactId >fingerprint-maven-plugin</ artifactId >
< version >3.6</ version >
< executions >
< execution >
< phase >package</ phase >
< goals >
< goal >generate</ goal >
</ goals >
</ execution >
</ executions >
< configuration >
< excludeResources >
< excludeResource >://</ excludeResource >
< excludeResource >//</ excludeResource >
< excludeResource >data:</ excludeResource >
</ excludeResources >
<!-- ${basedir}/src/main/webapp by default -->
< sourceDirectory >${basedir}/target/webcombined</ sourceDirectory >
<!-- ${project.build.directory}/optimized-webapp by default -->
< targetDirectory >${basedir}/target/optimized-webapp</ targetDirectory >
<!-- Optional: set to 'false' to disable minification of HTML, JS and/or CSS. -->
< minifyHtml >true</ minifyHtml >
< minifyJs >true</ minifyJs >
< minifyCss >true</ minifyCss >
<!-- Remove unnecessary spaces between tags. Make single line page. Takes into consideration <pre> tags -->
< htmlExtensions >
< htmlExtension >html</ htmlExtension >
< htmlExtension >jsp</ htmlExtension >
< htmlExtension >tag</ htmlExtension >
</ htmlExtensions >
< extensionsToFilter >
< extensionToFilter >html</ extensionToFilter >
< extensionToFilter >jsp</ extensionToFilter >
< extensionToFilter >tag</ extensionToFilter >
< extensionToFilter >css</ extensionToFilter >
< extensionToFilter >js</ extensionToFilter >
</ extensionsToFilter >
<!-- cdn host. Not required. For example using "//accountname.r.worldssl.net": /css/bootstrap.css -> //accountname.r.worldssl.net/css/<md5>bootstrap.css -->
< cdn >${cdn}</ cdn >
<!-- fingerprinted filename. Could be [name].[ext]?hash=[hash] -->
< namePattern >[hash][name].[ext]</ namePattern >
</ configuration >
</ plugin > location ~ ^/.+.(ico|jpg|jpeg|gif|pdf|jar|png|js|css|txt|epf|ttf|svg|woff)$ {
root < your root content>;
expires max;
add_header Cache-Control public;
}