Google AppEngine プロジェクトでライブラリ プロジェクトをビルド パスのプロジェクトとして使用しようとしています。
ソース全体をコピーしたり、jar を作成したりせずに、それを AppEngine プロジェクトに含める方法はありますか?
私はライブラリのごく一部しか使用していないので、jar 全体をコピーするのはやり過ぎのように思えます。ソース内の依存関係を見つけて、使用している部分だけを取得するために多くの作業が必要です。
Google AppEngine プロジェクトでライブラリ プロジェクトをビルド パスのプロジェクトとして使用しようとしています。
ソース全体をコピーしたり、jar を作成したりせずに、それを AppEngine プロジェクトに含める方法はありますか?
私はライブラリのごく一部しか使用していないので、jar 全体をコピーするのはやり過ぎのように思えます。ソース内の依存関係を見つけて、使用している部分だけを取得するために多くの作業が必要です。
依存プロジェクトからクラス ファイルをコピーする ant プロジェクト ビルダーを追加しました。Ant ファイルは gae プロジェクトに存在し、参照されたプロジェクトからクラス ファイルをコピーします。これがアリです:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonsCopy" default="copy" basedir=".">
<target name="copy">
<copy todir="war/WEB-INF/classes">
<fileset dir="../Commons/bin" includes="**/*.class">
</fileset>
</copy>
</target>
</project>
Commons プロジェクトからコードをコピーするため、「CommonsCopyBuilder.xml」と名付けました。
これにより、プロジェクトを実行する直前にファイルが適切な場所にコピーされます。
あなたはこの答えを気に入らないでしょうが、いいえ.
デプロイ後にライブラリを依存関係としてプロジェクトに含めるには、必要なライブラリがWEB-INF/lib
ディレクトリに jar として含まれている必要があります。これには、使用するライブラリに基づいて jar を作成する必要があります。もう1つのオプションは、依存ソースをプロジェクトにプルして、そこから使用すると言ったとおりにすることです。
開発中に、ライブラリ プロジェクトをアプリ エンジン プロジェクトの依存関係にすることができます。これには、次の操作を行います。
Under Project->Properties->Java Build Path->Projects Tab
select the "Add.." button to add a subproject to your build.
注: これは、実稼働環境での実行には対応していません。
libary プロジェクトを「Web フラグメント プロジェクト」として作成し、それをアプリ エンジン プロジェクトのプロジェクト プロパティの「Deployment Assembly」に追加することで、これを行うことができました。
ただし、アプリ エンジン プロジェクトは、重要な依存関係構造では機能しないようです。私の場合、EAR 内に 2 つのアプリ エンジン モジュールがあり、どちらもライブラリ プロジェクトに依存しています。ただし、Google プラグインは、ライブラリ プロジェクトをモジュールの 1 つにのみバンドルし、同じ構成にもかかわらず両方を同時にバンドルすることはありませんでした。明らかにバグです。
私の回避策は、ライブラリ プロジェクトのソース フォルダーを指す、リンクされたソース フォルダーをアプリ エンジン プロジェクトに追加することでした。醜いですが、それは仕事をします。