1

私は次の設定をしています: 共通のユーティリティと基本クラスを含むいくつかのプラグイン プロジェクトがあります。

  1. my.util
  2. my.util.ui

そして、それらを使用するプラグインが 1 つあります。ただし、これらのユーティリティ クラスをプラグインとしてインポートするのではなく、リンクされたソース フォルダーを使用したいと考えています。これはまったく問題ではなく、「ワークロード」プラグインはたとえば

  • my.actual.plugin

3 つのプラグインはすべて同じワークスペースにあり、「実際の」プラグインには、通常の「src」ソース フォルダと、次のリンクされたソース フォルダ「src.my.util」(my.util/src へのリンク) および「 src.my.util.ui" (my.util.ui/src へのリンク)。リンクされたソース フォルダーは、個々の出力フォルダーにバインドされます (src -> bin 、src.my.util -> bin.my.util 、src.my.util.ui -> bin.my.util.ui)。

ここで、プラグインのビルド ファイル (build.properties、またはマニフェスト エディター経由) で、2 つのユーティリティ プラグインのソースが別々の jar にビルドされるように指定したいと考えました。そのため、「ランタイム」の下のマニフェスト エディターで、2 つの追加の jar (「新規...」->「my.util.jar」および「my.util.ui.jar」) を追加し、「ビルド」の下にこれらの jar に適切なリンクされた src フォルダー。結果の build.properties ファイルは次のようになります。

    source.. = src/
    output.. = bin/
    source.my.util = src.my.util/
    output.my.util = bin.my.util/
    source.my.util.ui = src.my.util.ui/
    output.my.util.ui = bin.my.util.ui/
    jars.compile.order = .,\
                           my.util.jar,\
                           my.util.ui.jar
    bin.includes = META-INF/,\
                    my.util.jar,\
                    my.util.ui.jar

これを実行可能なjarとしてエクスポートすると機能します(簡単にするために、メインメソッドなどを持つクラスが含まれていると仮定しましょう...)。

ただし、「デプロイ可能なプラグインまたはフラグメント」エクスポート ウィザードを使用してこれをエクスポートしようとすると、次のようなエラー メッセージが表示されます。

    <workspace>\.metadata\.plugins\org.eclipse.pde.core\temp\org.eclipse.pde.container.feature\compile.org.eclipse.pde.container.feature.xml:4: The following error occurred while executing this line:
        <workspace>\my.actual.plugin\build.xml:167: The following error occurred while executing this line:
    <workspace>\my.actual.plugin\build.xml:138: <workspace>\my.actual.plugin\src.my.util does not exist.
    The following error occurred while executing this line:
    <workspace>\my.actual.plugin\build.xml:167: The following error occurred while executing this line:
    <workspace>\my.actual.plugin\build.xml:138: <workspace>\my.actual.plugin\src.my.util does not exist.

エクスポート ウィザードで [ワークスペースでコンパイルされたクラス ファイルを使用する] オプションをオンにしても、このエラーが発生します。

個別のランタイム jar を使用しない場合は機能しますが、それは私が望むものではありません ;-)

奇妙なことに、ant ビルド スクリプトをエクスポートすると (エクスポート... -> 一般/Ant ビルドファイル)、パスが正しく展開されます (「仮想」相対リンクから絶対パスに変換されます)。また、ant スクリプトは正しくコンパイルされます。プラグインとしてのエクスポートでハックが機能しないのはなぜですか?

私は誰かがいくつかの提案を願っていますか?前もって感謝します :-)

4

2 に答える 2

3

まだ誰もこれに答えていないことがわかりましたので、あなたが気に入らないかもしれない答え/意見を提供します.

プラグイン プロジェクトでリンクされたソース フォルダーを使用しないことを強くお勧めします。

表示されるエラーが発生する理由は、PDE がプロジェクトのビルドに別のメカニズムを使用するためです。プロジェクト構造を決定するために .classpath および .project ファイルを使用しません。代わりに、MANIFEST.MF と build.properties を使用します。また、Eclipse のリソース抽象化も使用しないため、リンクされたフォルダーは PDE によって認識されません。

PDE をだましてリンクされたソース フォルダーを見つけさせるハッキングがいくつかあるかもしれませんが、これは移植可能なソリューションではありません。

代わりに、ソース フォルダーをコピーする必要がないように、複数のプラグインを使用できるように分割することをお勧めします。

于 2012-09-05T03:19:44.557 に答える
1

バグ レポートを提出しました: https://bugs.eclipse.org/bugs/show_bug.cgi?id=457192 関連するバグ レポート: https://bugs.eclipse.org/bugs/show_bug.cgi?id= 66177

解決すればいいと思う

于 2015-01-12T08:02:24.037 に答える