我几乎完成了将我的项目设置为使用普通 javascript 文件或不同环境的最小版本,但有一件事我无法弄清楚 - 至少不优雅。
我已经设置了我的项目的 Maven POM 以使用 YUI 压缩器:
<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>
这没问题。
我还创建了一个 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 脚本中放置“真/假”(或者我猜它也可以设置后缀)。你们是如何处理这个问题的?老实说,当我部署我的应用程序时,我不想做任何手动捏造。我只想告诉 maven,“使用我的生产环境”,它可以工作。