0

さまざまな環境で通常のJavaScriptファイルまたは最小バージョンを使用するようにプロジェクトを設定することはほぼ完了しましたが、理解できないことが1つあります。少なくとも、エレガントではありません。

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

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

これは問題なく動作します。

また、さまざまなcssファイルとjavascriptファイルを含めるためのfreemarkerマクロを作成しました...「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にフリーマーカースクリプトに「true / false」(またはサフィックスも設定できると思います)を入れさせることです。この問題にどのように対処しましたか?正直なところ、アプリをデプロイするときに手動でいじくり回したくはありません。Mavenに「本番環境を使用してください」と伝えたいだけです。

4

1 に答える 1

1

FreeMarker でどのように機能するかはわかりませんが、Velocity テンプレート エンジンを使用すると、常に表示したいモデルの特定のプロパティを構成できます。したがって、FreeMarker/Velocity 構成 Bean をカスタム プロパティのリストと結び付けます。この値は、 PropertyPlaceholderConfigurersuffixでアクセスされるプロパティ ファイルに格納されている値から取得できます。

したがって、実動プロパティー・ファイルには がsuffix = minあり、他のファイルのプロパティー環境には がありますsuffix =

Maven でさまざまな環境にさまざまなプロパティを使用する限り、ランタイム引数に基づいてビルド内のリソースをフィルター処理するように Maven を構成できます。つまり、productionプロファイルはデフォルトとは異なるフィルター値のセットをロードできます<profile>

于 2011-04-29T19:07:23.790 に答える