1

私の Eclipse プラグイン (OSGi バンドル) の 1 つには、Database Elements.sql ファイルのディレクトリ ( ) が含まれているはずです。私のbuild.properties番組:

bin.includes = META-INF/,\
           .,\
           Database Elements/

(...これは私には正しいように見えます。)

インタラクティブな Eclipse IDE 内でビルドして実行すると、すべて正常に動作します。有効なオブジェクトを呼び出しBundle.getEntry(String)て返す。私のテストは満足です。私のコードは幸せです。Bundle.findEntries(String, String, bool)URL

ヘッドレス ant スクリプト (PDE ビルドを使用) を介してビルドすると、同じ呼び出しが返されnullます。私のテストは壊れます。私のコードが壊れます。Database Elements私は、プラグインの JAR パッケージにそれが静かに、しかし単純に欠けていることを発見しました。(META-INFそして、ビルドされたクラスはまだそこにうまく収まります。)ビルドログを精査しました(最終的ant -verboseにはビルドスクリプトの関連部分を呼び出しました)が、役立つことについての言及は見当たりませんでした。

何を与える?

4

1 に答える 1

0

(Bugzilla の引用を検索することはできませんでしたが) 3.2 の時点で PDE ビルド ant-script 生成プロセスにバグがあり、次のような antbuild.xmlスクリプト フラグメントが生成されたようbin.includesです。

<copy todir="${destination.temp.folder}/my_plugin" failonerror="true" overwrite="false">
    <fileset dir="${basedir}" includes="META-INF/,Database Elements/"           />
</copy>

関連するAnt ドキュメントにはincludes、「コンマまたはスペースで区切られたパターンのリスト」が含まれていると記載されています。したがって(私のディレクトリ名にはスペースが含まれており、文字通り属性値にコピーされたため)、タスクは という名前のファイルと という名前のディレクトリを含めようとしてincludesいたと思います。どちらも存在しなかったので、静かに無視されました。ディレクトリ名にコンマが含まれていた場合、同じ問題が発生したと思われますが、これはテストしていません。copyDatabaseElements/

私は対話的に Eclipse 3.5 を使用しているので、最終的にヘッドレス ビルドの Eclipse インスタンスをターゲット プラットフォーム (現時点では 3.2 のまま) から分離し、ヘッドレス PDE ビルドを 3.5 に更新することにしました (最小限の PDE ビルド構成を私のインタラクティブなインスタンスのプラグイン)。現在、生成さbuild.xmlれたものには代わりにこれが含まれています:

<copy todir="${destination.temp.folder}/my_plugin" failonerror="true" overwrite="true">
    <fileset dir="${basedir}">
        <include name="META-INF/"/>
        <include name="Database Elements/"/>
    </fileset>
</copy>

今回関連するAnt ドキュメントは、個々の特殊文字は と のみであることを示してinclude*ます?。実際、このバグは 3.2 から 3.5 の間に修正されたようです。私の 3.5 ベースのヘッドレス PDE ビルドは、Database Elements;を含むプラグインを生成するようになりました。私のテストは満足です。私のコードは満足です。私は満足しています。

于 2010-05-06T16:14:10.637 に答える