-1

私は Java 6 と Ant 1.6 で問題なくビルドしていましたが、現在は Java 7 と Ant 1.8.4 を使用しており、いくつかの問題があります。私はかなりの数を克服しましたが、私が立ち往生しているものがあります。

私はいくつかの一般的なターゲットを含むファイルを持っています。

<target name="common_init">
    <path id="project.class.path">
        ... stuff
    </path>
</target>

および 2 つのビルド ファイル: buildfile1.xml

<?xml version="1.0"?>
<!DOCTYPE project [
    <!ENTITY common SYSTEM "file:./common.xml">
]>

<project name="proj1" default="main" basedir=".">
    <!-- import common targets using a xml entity definition -->
    &common;
    ...
    <target name="compile" depends="common_init">
        <javac
            srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/*.java" source="${javac.target}" target="${javac.target}">

            <src path="..."/>
            <classpath refid="project.class.path"/>
        </javac>
    </target>
    ...
</project>

それはうまくいきます。しかし、ほぼ同じ 2 番目のビルド ファイルでエラーが発生します。

Reference project.class.path not found.

2 番目のビルド ファイルは次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE project [
    <!ENTITY common SYSTEM "file:./common.xml">
]>

<project name="proj1" default="main" basedir=".">
    <!-- import common targets using a xml entity definition -->
    &common;
    ...
    <target name="compile" depends="common_init">
        <javac
            srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/MyFile.java" source="${javac.target}" target="${javac.target}">

            <classpath refid="project.class.path"/>
        </javac>
    </target>
    ...

同じプロジェクト名が問題かもしれないと(ストローを握りしめながら)考えましたが、違います。両方のビルドファイルは、次を使用してより高いレベルのビルド ファイルから開始されます。

<ant antfile="buildfileX.xml"...>

どんな助けでも大歓迎です。

ポール

4

1 に答える 1

-1

元の投稿にあったコードは単なる疑似コードであり、問​​題の原因となっている重大な違いを省略していたことをお詫びします。

動作しているビルド ファイルは、元の投稿のとおりです。失敗しているものも投稿されていますが、わずかに異なる方法で呼び出されます。

<project name="proj1" default="main" basedir=".">
    <!-- import common targets using a xml entity definition -->
    &common;
    ...
    <target name="compile" depends="common_init">
        <antcall target="compile1"/>
    </target>

    <target name="compile1" depends="">
        <javac
            srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/MyFile.java" source="${javac.target}" target="${javac.target}">

            <classpath refid="project.class.path"/>
        </javac>
    </target>
    ...
</project>

したがって、タスク間のデフォルトの継承が変更された Ant 1.6 と 1.8.4 の間に変更があったに違いありません。なんてばかげた変更をしたのでしょう。それは人々(私のような人々!!)の問題を引き起こすだけです. とにかく、この投稿が同じ問題に遭遇した他の人に役立つことを願っています.

ポール

于 2013-01-24T10:40:27.753 に答える