Javascript 使用maven、spring、freemarker等帮助设置YUI压缩机,以适应不同的环境(测试/开发/生产)
我几乎完成了将我的项目设置为在不同环境下使用普通javascript文件或min版本的工作,但有一件事我搞不清楚——至少不是很优雅 我已将我的项目的Maven POM设置为使用YUI压缩机:Javascript 使用maven、spring、freemarker等帮助设置YUI压缩机,以适应不同的环境(测试/开发/生产),javascript,spring,maven,freemarker,yui-compressor,Javascript,Spring,Maven,Freemarker,Yui Compressor,我几乎完成了将我的项目设置为在不同环境下使用普通javascript文件或min版本的工作,但有一件事我搞不清楚——至少不是很优雅 我已将我的项目的Maven POM设置为使用YUI压缩机: <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifact
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<suffix>.min</suffix>
</configuration>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
</plugin>
net.alchim31.maven
yuicompressor maven插件
1.1
闵先生
压缩
这没问题
我还创建了一个freemarker宏来包含各种css和javascript文件。。。如果我们想使用“min”版本,它会在其中添加后缀:
<#macro cssAndJavaScript public useMin>
<#assign suffix = "" />
<#if useMin>
<#assign suffix = ".min" />
</#if>
<#if public>
<link rel="stylesheet" type="text/css" href="${base}/css/public/base${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/public/webpageLayout${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/public/forms${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/public/publicWebpages${suffix}.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" href="${base}/css/public/login${suffix}.css" media="screen, projection" />
<#else>
<link rel="stylesheet" type="text/css" href="${base}/css/ui-lightness/jquery-ui-1.8.6.custom${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/jcrop/jquery.jcrop${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/base${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/webpageLayout${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/forms${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/entityListing${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/entityView${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/questions${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/categoryQuestions${suffix}.css" media="screen, projection"/>
<link rel="stylesheet" type="text/css" href="${base}/css/application/miniScoreCard${suffix}.css" media="screen, projection"/>
</#if>
<script src="${base}/js/jquery/jquery-1.4.2${suffix}.js"></script>
<script src="${base}/js/jquery/jquery-ui-1.8.6.custom${suffix}.js"></script>
<script src="${base}/js/jquery/jquery.tmpl${suffix}.js"></script>
<script src="${base}/js/jquery/jquery.jcrop${suffix}.js"></script>
<script src="${base}/js/json/json2${suffix}.js"></script>
<script src="${base}/js/jwplayer/jwplayer${suffix}.js"></script>
<script src="${base}/js/core${suffix}.js"></script>
</#macro>
我现在唯一的问题是,如果我在测试环境或生产环境中,让Spring或Maven在我的freemarker脚本中添加“true/false”(或者我猜它也可以设置后缀)。你们是怎么处理这个问题的?老实说,当我部署我的应用程序时,我不想做任何手动胡闹。我只想告诉maven,“使用我的生产环境”,它可以工作。我不确定它如何与FreeMarker一起工作,但使用Velocity模板引擎,您可以在模型中配置希望始终显示的某些属性。因此,您可以将FreeMarker/Velocity配置bean与自定义属性列表连接起来,其中
后缀的值可以来自使用访问的属性文件中存储的值
因此,您可以让生产属性文件具有suffix=min
,而其他文件的属性环境具有suffix=
对于使用Maven的不同环境使用不同的属性,您可以根据运行时参数将Maven配置为在您的构建中,即生产配置文件可以加载一组不同于默认
的筛选器值