为什么Eclipse ant编辑器警告我

时间:2013-03-13 08:30:25

标签: java eclipse ant

我在Eclipse中使用ANT编辑器遇到了一些麻烦(非常烦恼),它在下面的块中向我显示警告“reference build.classpath not found。”

<target name="generate" depends="..., mvn-depends">
    <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
        <classpath refid="build.classpath" />
    </taskdef>
    ...
</target>

mvn-depends目标看起来像这样:

<target name="mvn-depends">
    <artifact:dependencies pathId="build.classpath">
        <pom refid="my.pom" />
    </artifact:dependencies>
</target>

构建文件中对build.classpath的其他引用没有抛出任何警告,并且构建运行正常而没有任何错误,因此它似乎没有太多。

但是,每次我必须编辑该文件时,忽略警告会让我觉得有点脏。具体来说,不知道这是Eclipse ant构建文件验证代码中的错误,还是构建文件构建方式的潜在问题,Eclipse已经确定了。

如果有人对为什么要显示此警告有任何想法,是否可以安全地忽略或甚至禁用偏好并愿意分享这些知识,我肯定会对这些知识表示感谢。

修改

根据要求,以下是build.classpath引用的示例,该引用不会引起任何警告:

<javac deprecation="off" debug="on" source="1.7" target="1.7" encoding="UTF-8"
       includeantruntime="false" memoryMaximumSize="512M" fork="true">
    <classpath refid="build.classpath" />
</javac>

2 个答案:

答案 0 :(得分:1)

由于编辑器可以识别Ant指定的refids和其他元素,我猜编辑器会执行类似于Ant的构建文件解析过程。

也就是说,将此ant构建文件解析为Project对象,可以检查<taskdef>中的引用,而<javac>可能不会。

由于build.classpath是在运行时设置的,并且它是由<classpath>以外的东西设置的,因此Eclipse可能找不到它。

我没有强有力的证据。但是可以采取一些措施让我们了解更多。

  • 首先,将<javac>复制到警告的同一目标 存在<taskdef>,以查看<javac>是否收到警告;

  • 然后,将<taskdef>复制到预设定义的同一目标 存在<javac>,以查看<taskdef>是否仍会收到警告;

  • 第三,在目标“生成”中,注释掉<taskdef>部分,然后 检查<xjc ... />来电是否收到警告。

对于第一个,我期待“不”,而对于其他两个,我期待“是”。否则,我的猜测是错误的。

有意义的是它只是一个警告 - Eclipse在运行时可能无法在编辑时找到。

答案 1 :(得分:0)

确保您已正确指定路径元素位置。

<property name="dependencyfinder.home" value="C:/DependencyFinder"/>

<path id="dependencyfinder">
    <pathelement location="${dependencyfinder.home}/lib/aaa.jar"/> 
</path>


<taskdef classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="dependencyfinder"/>
</taskdef>

注意:DependencyFinder有一个文件夹lib,lib有aaa.jar

请查看波纹管链接以获取更多信息 Click here