2010-12-13 3 views
0

私のプロジェクトでは、通常のjavascriptファイルや異なるバージョンのminバージョンを使用するように設定していますが、私は理解できません - 少なくともエレガントではありません。これは何の問題も働きませんさまざまな環境(テスト/開発/生産)のためのmaven、spring、freemarkerなどで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> 

私はYUIのコンプレッサーを使用するように私のプロジェクトのMavenのPOMを設定しました。

<#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> 

私の唯一の問題は今:私はまた、様々なCSSやJavaScriptファイルを含めるようにFreeMarkerのマクロを作成した...そして私たちは、「分」のバージョンを使用する場合、それは彼らに接尾辞を追加します

私がテスト環境またはプロダクション環境にいる場合は、私のfreemarkerスクリプトでSpringまたはMavenに "true/false"(または私はちょうど接尾辞を設定することができると思います)を入力しています。どうやってこの問題に取り組んだのですか?正直なところ、私は自分のアプリを配備するときに手作業ではじめてやりたいとは思わない。私は単に "私のプロダクション環境を使用する"ということをmavenに伝えたいだけです。

答えて

1

FreeMarkerとの連携方法はわかりませんが、Velocityテンプレートエンジンでは、常に表示したいモデルの特定のプロパティを設定できます。したがって、FreeMarker/Velocityの設定Beanをカスタムプロパティのリストに接続します。ここでは、suffixの値は、PropertyPlaceholderConfigurerでアクセスされるプロパティファイルに格納された値から取得できます。

したがって、プロダクションプロパティファイルのファイル名はsuffix = min、その他のファイルのプロパティ環境ファイルのファイル名はsuffix =です。

は限りMavenの持つさまざまな環境のために異なる特性を使用するなど、デフォルト<profile>よりも、フィルタ値の異なるセットを読み込むことができ、すなわちproductionプロファイル実行時の引数に基づいてビルドにfilter the resourcesにMavenを設定することができます。

関連する問題