2

私はGWT/AppEngineプロジェクトに取り組んでおり、すべてのGWTJavaクラスがappcfgステージングディレクトリのWEB-INF/ classes / projectpackage /client/フォルダーにコンパイルされた形式で終わることに気付きました。これにより、デプロイごとに大量の不要なアップロードデータが作成されるだけでなく、これらのファイルを世界中と共有したくありません。

これらのファイルをアップロードから除外する方法はありますか?Eclipseの設定はすばらしいでしょうが、もちろん、appengine-web.xmlのエントリでも同様にうまくいきます...

4

2 に答える 2

2

これは、Antを使用して実現でき、クラスを妨害することでパフォーマンスが向上します。

1)Eclipseからgwtコンパイルを実行します

2)以下のantタスクのようなものを実行します(Antビューを使用してEclipseで簡単に実行できます):

 <property name="staging.dir" value="war" />

 <property name="classes.dir" value="${staging.dir}/WEB-INF/classes" />

    <target name="jarClasses">
       <delete file="${staging.dir}/WEB-INF/lib/classes.jar" />
       <echo> ${staging.dir}/WEB-INF/lib/classes.jar DELETED </echo>
       <jar destfile="${staging.dir}/WEB-INF/lib/classes.jar" basedir="${classes.dir}"
           excludes="${classes.dir}/projectpackage/client/*.*"/>
       <echo> ${staging.dir}/WEB-INF/lib/classes.jar JARRED </echo>
       <delete dir="${classes.dir}" />
       <echo> ${classes.dir} DELETED </echo>
    </target>

3)appcfg.sh(またはWindowsバージョン)を使用してアップロードを実行します

于 2012-09-22T22:44:51.963 に答える
1

これを行う最良の方法は、クライアントとサーバーを2つのプロジェクトに分割することだと思います。GPEは、それらが同じプロジェクトに含まれることを望んでいますが、これには、単一の出力フォルダーと単一のクラスパスという厄介な副作用があります。

出力を別のフォルダーにコンパイルするように指示することはできません。そうすると、サーバークラスファイルがそこに配信されないためです。

2つのプロジェクトを分割する以外に、アップロードする前にclient/サブディレクトリを削除するスクリプトを作成するのが最善の答えだと思います。スクリプト機能がないためにGPEデプロイボタンに不満を感じていたため、コンパイル/デプロイプロセスをantタスクに切り替えました。

注:WEB-INFは公開されていないため、クラスファイルを世界中に公開していない可能性があります。

于 2012-09-22T22:20:19.180 に答える