0

クリーン、コンパイル、jar、javadocs などの典型的な処理を行う ant スクリプトがあります。また、Eclipse にはライブラリとそれをテストする 2 つのプロジェクトの 3 つのプロジェクトがあります。

この 2 つのテスト プロジェクトのビルド パスで、ライブラリ プロジェクトにあるライブラリ jar を外部 jar として定義しました。

ライブラリ jar の jar 名には、そのバージョン (library-0.1.jar など) が含まれています。Ant スクリプトには、ライブラリのバージョンのプロパティがあります。

<property name="project_version" value="0.1"/>

したがって、バージョンを変更するには、このプロパティを変更してスクリプトを再度実行します。ご想像のとおり、これにより、他の 2 つのプロジェクトで依存関係エラーが生成されます。これは、これらのプロジェクトがまだ古いファイル library-0.1.jar を指しているからです。

Eclipse で他の 2 つのプロジェクトのビルド パスを自動的に変更するにはどうすればよいですか? Apache ant は特定のタグでこれを行うことができますか?

ありがとう。

4

3 に答える 3

4

すべてのビルドファイルに変数があるバージョンを参照してください。例:

<include name="my-${version}.jar"/>

これで、ビルドを実行するときに、必要なものに一致するように明示的なバージョンで実行できます。

ant -Dversion=1.3

または、各ビルドスクリプトに同じプロパティファイルをロードして、バージョンプロパティをロードすることもできます。

<property file="version.properties">

後者を使用する場合は、値を明示的に設定するプロパティ宣言(上記の投稿から)を削除する必要があることに注意してください。それか、最初にプロパティファイルをロードします。...。

于 2011-04-15T12:20:38.003 に答える
2

sed を使用します。たとえば (テストされていません):

バージョン=2
sed s/value="\d+"/value="$version"/g build.xml
于 2011-04-15T12:10:13.483 に答える
0

編集: 以下の方法を使用すると、Ant を使用してコンパイルできますが、ビルド パス パネルで外部 jar を定義していないため、Eclipse はプロジェクト エクスプローラーに依存関係エラーを表示します。これを解決するには、プロジェクト ルートに表示される .classpath ファイルを編集し、次の行を追加する必要があります。

<classpathentry kind="lib" path="../Library/bin"/>

Library は Library プロジェクトのフォルダーで、bin はクラスのフォルダーです。




解決済み:

他の 2 つのプロジェクトの ant スクリプトを作成し、eclipse IDE ではなくスクリプトでクラスパスを設定する必要があります。

<path id="build-classpath">
    <fileset dir="${dist}">
        <include name="${project_name}-${project_version}.jar"/>
    </fileset>
</path>

${dist} は jar ライブラリのフォルダです。「../Library/dist」のような形式です。Library はプロジェクトの名前です。
${project_name} と ${project_version} は、"../Library" に保存されている version.properties ファイルから読み込まれます。

<property file="..Library/version.properties"/>

ファイル version.properties には次のものが含まれています。

project_name=LibraryName
project_version=0.1

次に、コンパイル時にクラスパスを追加するには...

<target name="compile" depends="clean, makedir">
    <javac srcdir="${src}" destdir="${bin}">
        <classpath refid="build-classpath"/>
    </javac>
</target>

refid 値は、以前に定義されたパス ID です。

于 2011-04-15T14:13:35.473 に答える