2

すべての JavaScript ファイルを圧縮し、YUICompressor を使用してそれらを集約したいのですが、これを可能にする Maven プラグインがあることがわかりました。私はそれをほとんどの部分で機能させました。

Mojo tomcat プラグインも使用しています。tomcat:run ゴールを実行すると、Tomcat はターゲットの出力ディレクトリ (YUI コンプレッサーが JavaScript ファイルを配置する場所) からは読み取らず、「src/main/」内の実際のソース ファイルから読み取ります。 webapp/scripts" ディレクトリ。もちろん、集約された javascript ファイル (all.js) は存在しません。

いくつかの質問を聞きたいんです。

  1. yui コンプレッサー プラグインが作成したターゲットの出力フォルダーを tomcat プラグインに読み取らせるにはどうすればよいですか?

  2. 開発中に JavaScript ファイルを更新するたびに、yui コンプレッサー maven ゴールを実行する必要がありますか?

  3. これを達成するためのより良い方法はありますか?基本的に、私の最終目標は、JavaScript を開発し、開発モードでソース ファイルをテストできるようにすることですが、ファイルを圧縮して集約しall.js、アプリケーションが運用モードで実行されているときにスクリプトを使用したいと考えています。

Railsの人々は確かにこれを理解していますが、これはMavenとSpringに関係する重要なことのようです.

これを正しく実行する方法について、あらゆる支援をいただければ幸いです。ありがとう!

4

2 に答える 2

1

私はちょうどこの問題を調査していて、プラグインのドキュメントを見て答えを見つけました。

mvn tomcat:run - 組み込み Tomcat サーバーを使用して、現在のプロジェクトを動的 Web アプリケーションとして実行します。

これが実際に意味することは、組み込みの tomcat が実行されたときに、パッケージの実行フェーズに達していないということです。

答えは、代わりに次を使用することです。

mvn tomcat:run-war - 組み込みの Tomcat サーバーを使用して、現在のプロジェクトをパッケージ化された Web アプリケーションとして実行します。

これにより、Maven ビルドは WAR ファイルのパッケージ化まで行うことができるため、yuicompressor-maven-pluginは組み込みの tomcat が起動する前に必要なことを実行できます。

于 2012-08-03T12:04:20.537 に答える
-1

毎回実行する必要がある場合は、yui プラグインの実行を「generate-sources」実行フェーズに追加する必要があります。

以下をプラグインに追加します (重要な部分は、ライフサイクルにアタッチするための「フェーズ」要素です)。

  <plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <executions>
      <execution>
        <phase>generate-sources</phase>
        <goals>
          <goal>compress</goal>
        </goals>
      </execution>
    </executions>  
    <configuration>...</configuration>      
  </plugin>

このようにして、プラグインはソースの生成段階ですべてのビルドを実行します。したがって、プラグインを構成した Java スクリプトを変更するたびに、次のようなものを実行するとすぐに出力 .js ファイルが更新されます。

mvn compile
mvn test
mvn install
mvn package

など。


上記により、ライフサイクルの早い段階で縮小された(おそらく集約された)ファイルが作成されますが、tomcat:runはそれらを見つけることができません!

于 2012-08-03T12:14:56.907 に答える