0

現在のプロジェクトでは GWT バージョン 2.4 を使用しています。サーバー側では、Spring & カスタム JDBC フレームワークを使用しています。

ビルド ツールとして Maven を使用しています。アプリケーションは JBOSS 7 サーバーにデプロイされています。

現在、1 つの Eclipse プロジェクトにすべてが含まれています。Spring の 1 つの Application.gwt.xml ファイルと 1 つの ApplicationContext.xml ファイルを意味します。約 2000 個の Java ファイルがあり、そのうち約 1500 個が GWT 関連のソース ファイル用です。

プロジェクトは、より多くのソース ファイルで成長を続けています。

Java to Javac [class file] コンパイル時間のタイミングは問題ありません。しかし、 Java から JavaScript になると、それは問題です。

GWT フォーラムで言及されているすべてのハックを使用しました。

お気に入り。

  1. 1 つのローカルのみのコンパイル
  2. 1 つのブラウザのみのコンパイル

それでも、コンパイルには 4 ~ 6 分かかります。または、場合によっては 7 分かかることもあります。

この質問で、同じことを改善するために利用できるオプションを知りたいです。

次のようにプロジェクトを分割することを考えています。

  • モジュール 1 (JAR ビルド)
  • モジュール 2 (JAR ビルド)
  • モジュールのメイン (WAR ビルド)。これには、モジュール 1 とモジュール 2 を継承する Application.gwt.xml ファイルが含まれます。

今質問が来ます:

1) これはコンパイル時間の改善に役立ちますか?

2) Module 2 のみを変更してから Module Main をコンパイルした場合、GWT は Module Main に継承されているため、Module 1 をコンパイルしますか?

上記のシナリオについてあなたの意見を共有してください。GWT 2.5 オプションも試してみましたが、パフォーマンスの改善には役立ちませんでした。

ありがとう、ニラジ・サロット。

4

1 に答える 1

1

GWT 固有のものではないため、最初に 2 番目の質問に回答します。あなたのプロジェクトがこのように構成されていると考えると:

project-root    
  |- module1 (jar)
  |- module2 (jar)
  L moduleMain (gwt + war)

に変更を加え、module2を再コンパイルしたくないmodule1場合は、オプションを使用してビルド プロセスからスキップできます (フォルダー-plから起動するコマンド)。project-root

mvn clean install -pl module2,moduleMain

これによりmodule2、再コンパイルされますがmoduleMain、再コンパイルされませんmodule1

これはコンパイル時間の改善に役立ちますか?

それは大きさmodule1module2比較に依存しmoduleMainます...しかし、GWTでの私の経験は、一般的にJavaクライアントコードをJavaScriptにコンパイルするのに多くの時間が費やされるということです。この操作は引き続き で行われるmoduleMainため、プロジェクトを複数のモジュールに分割しても、コンパイル時間を大幅に改善するには不十分であると言えます。

さらに、gwt-maven-plugin内の有効化/無効化を制御するプロファイルを使用することをお勧めしますmoduleMain

moduleMainpom.xml で、次のように GWT プラグインをプロファイルに移動します。

<profiles>
        <profile>
            <id>GWTBuild</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>gwt-maven-plugin</artifactId>
                        <version>2.4.0</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>compile</goal>
                                    <goal>generateAsync</goal>
                                    <goal>test</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <runTarget>com.yoururlroot/index.html</runTarget>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

module2次に、変更されたために戦争を再構築したいだけで、再構築module1もすべての GWT の再コンパイルも行わない場合は、単に次を起動します。

mvn clean install -pl module2,moduleMain -P!GWTBuild

このコマンドでは、GWT プラグインが非アクティブ化されているため、maven は war のみを再構築します。

これがあなたのために働いているかどうか教えてください。

于 2012-09-04T08:04:42.747 に答える