2012-02-22 4 views
3

ビルドパスでGoogle AppEngineプロジェクトでライブラリプロジェクトをプロジェクトとして使用しようとしています。AppEngineでのワークスペースプロジェクトの使用

AppEngineプロジェクトにソースコード全体をコピーしたり、jarファイルを作成しなくても、それを入手する方法はありますか?

私はライブラリの一部を使いますので、瓶全体をコピーするのが面倒で、ソース内の依存関係を見つけるために多くの作業が必要になります。

+1

これまでのところGoogleがこの問題に対処していないのは間違いです。 –

+0

これを望んでいる他の動機があります。例:GAEプロジェクトで使用するライブラリを開発する。小さな変化をテストするたびにjarファイルを作成する必要はありません。 GAEプロジェクトからライブラリプロジェクトを参照すると、このシナリオも解決されます。 –

答えて

3

プロジェクトで依存関係が一度に必要なライブラリがjarファイルとしてあなたWEB-INF/libディレクトリにする必要があります展開として、あなたはこの答えを好きになるだろうが、ライブラリを含めるために、第

されていません。これは、使用したいライブラリに基づいてjarファイルを作成する必要があります。もう一つの選択肢は、従属ソースをあなたのプロジェクトに引っ張ってそこから使うと言ったようにすることです。

開発中に、次の手順を実行して、ライブラリプロジェクトをあなたのApp Engineプロジェクトの依存関係を作ることができます。

Under Project->Properties->Java Build Path->Projects Tab 
select the "Add.." button to add a subproject to your build. 

注:これは、本番環境で実行に対応していません。

+0

ええと...ちょうど私が思ったように...でも、とにかく答えはちょっと大丈夫です:-) –

+1

これは開発環境では機能しません:( –

4

私は、依存プロジェクトからクラスファイルをコピーする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」と名付けました。

これは、プロジェクトを実行する直前の適切な場所にファイルをコピーします。

+1

これを行う方法を正確に理解するのに少し時間がかかりました(http: //help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FgettingStarted%2Fqs-93_project_builder.htm)しかし、それは正常に機能しました。その方法はあまり頻繁に実行されないように見えたからです.Commonが触発され、派生したプロジェクトがビルドされるたびに実行されるわけではありません。 –

0

私はlibaryプロジェクトを作成することでこれを行うことができました。これは "Web Fragment Project"で、それをApp Engineプロジェクトのプロジェクトプロパティの "Deployment Assembly"に追加します。

しかし、アプリエンジンプロジェクトは、自明でない依存関係の構造では機能しないようです。私の場合は、libaryプロジェクトによってEAR内に2つのアプリケーションエンジンモジュールがありました。しかし、Google Pluginは、ライブラリプロジェクトをモジュールの1つにバンドルしていましたが、同じ構成であっても同時に両方を同時に使用することはできません。明らかにバグ。

私の回避策は、リンク元のフォルダをアプリケーションエンジンプロジェクトに追加して、ライブラリプロジェクトのソースフォルダをポイントすることでした。醜いですが、それは仕事をします。

関連する問題