3

基本的にそれが私の要件です。誰かが「Javaビルドパス」セクションでjar参照を追加または削除した場合、プロジェクトがビルドされ、プロジェクトのjarが生成されるときに、そのjarが含まれる必要があります(削除の場合は含まれません) build.xml ant ファイルを使用します。xml ファイルでプロパティまたは変数を参照することを期待していました。何かのようなもの:

<!-- copy the JARs that you need to "target" directory  -->
<copy todir="target">
    <fileset dir="${buildPath}" includes="*.jar" />
</copy>

${buildPath} は「Java ビルド パス」を指しています。それは単なる例であり、機能しません

build.xml にすべての jar を個別に配置するのではなく、 includes="*.jar" のようなものを使用することに注意してください。したがって、誰かが "Java Build Path" を変更した場合、ビルドを変更する必要はありません。 .xml

4

3 に答える 3

2

Eclipse のビルド パス情報は.classpathファイルに格納されており、おそらくこれから簡単なビット (プロジェクト ワークスペース内または外部の絶対パスを使用して単一の JAR ファイルを指すエントリ) を解析できますが、これではこれまでのところしか取得できません。 「クラスパス変数」に基づくもの、ワークスペース内の他のプロジェクトへの参照、または Eclipse プラグインによって提供される他のタイプのコンテナなど、他のタイプのクラスパス エントリがあります。たとえば、GGTS プラグイン (Groovy および Grails 用) があり、Grails プロジェクト.classpathには明示的にリストされた JAR がまったくなく、単に

<classpathentry kind="con" path="org.grails.ide.eclipse.core.CLASSPATH_CONTAINER"/>

これに役立つと主張するAnt4Eclipseプロジェクトがありますが、最新のリリース (「マイルストーン 4」) は 2010 年半ばのものであり、最近の Eclipse でどれだけうまく機能するかわかりません。

より良いアプローチは、Ivyを使用して依存関係を宣言的に管理し、Ant ビルドEclipse プロジェクト ( IvyDEを使用) の両方でライブラリをそこから取得することです。依存関係を追加または削除する場合は、ivy.xmlファイルを編集するだけで、Ant と Eclipse の両方が次のビルドで変更を取得します。

于 2013-03-29T20:40:08.213 に答える
2

xmlproperty タスクを使用して、.classpath をプロパティ値に読み込みます。

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" />

次に、その値をパスに設定します

<path id="eclipse.classpath">
    <pathelement path="${classpath.classpathentry.path}"/>
</path>


<target name="compile" depends="init">

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled">
        <classpath refid="eclipse.classpath"/>
    </javac>
</target>
于 2014-04-09T16:25:03.530 に答える
1

EclipseのJava ビルド パスは、実際には.classpathEclipse プロジェクトのファイルによってサポートされています。したがって、そのファイルを見ると、Eclipse で使用されるすべてのパスが表示されます。ant を使用して、そこからそれらを解析できます。たとえば、標準の JRE ライブラリを指すJava ビルド パスと、別のプロジェクト (dataset-tools) からの jar へのリンクを含む単純なプロジェクトがあります。これは私の.classpathです:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="lib" path="/dataset-tools/target/dataset-tools.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

したがって、ご覧のとおり、Java Build Path.classpathに新しい jar を追加すると、次のようにファイルに反映されます。

    <classpathentry kind="lib" path="/dataset-tools/target/dataset-tools.jar"/>

classpathentryant を使用してそのファイルを解析し、 kind でこれらの要素を探すことができますlibこれは、ここで提示された回答と同じです。

于 2013-03-29T20:11:57.543 に答える