我在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>
答案 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