我在这里有一个非常简单的Ant示例,它生成Eclipse以报告警告:
<ivy:cachepath pathid="path.pmd" organisation="pmd" module="pmd" revision="4.3" conf="default" inline="true" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="path.pmd" />
报告的问题是:
Description Resource Path Location Type
Reference path.pmd not found. build.xml /MyPrj line 20 Ant Buildfile Problem
现在很清楚这里发生了什么。 Ant没有看到在常春藤的cachepath任务中定义的path.pmd并创建了警告。 现在我想忽略这个警告。但是,我不想在Eclipse中使用Ant偏好来忽略警告。我知道这很容易,但这也意味着有一天,当我真的缺少参考时,我不会得到警告。
Ant是否忽略了评论风格?就像在PMD中一样,你可以使用// NOPMD忽略指定行上的任何警告。如果有,请赐教:)
如果没有,是否有任何其他方法可以从Ant构建文件中的此特定行中删除此警告。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我认为偏好是关键,即使你不想这样做,看看这个,也许你会在几个链接中找到别的东西:
How to tell Eclipse to ignore errors in an Ant build.xml?
我是从Knots找到的:
“另一种解决方法(不如禁用所有验证/问题报告那么激烈):转到Window-&gt; preferences-&gt; Ant-&gt; Problems选项卡。将”build.xml“添加到忽略列表...”< / p>
答案 1 :(得分:1)
你的问题的答案是否定的。
但是,可以使用属性来打开/关闭目标,如下所示:
<target name="resolve-ivy" if="use.ivy">
<ivy:cachepath pathid="path.pmd"....
</target>
<target name="resolve-ant" unless="use.ivy">
<path id="path.pmd">
<pathelement location="/path/to/pmd/jar/pmd.jar"/>
</path>
</target>
<target name="create-tasks" depends="resolve-ivy,resolve-ant">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="path.pmd" />
</target>
因此,如果设置了属性“use.ivy”,那么您的构建将使用常春藤来下载构建依赖项。
我有很多观察......
为什么要使用两种机制来管理构建的类路径?
如果您正在使用Eclipse,可能会使用Eclipse plugin和外部ivy.xml进行调查,以跟踪项目的依赖关系。这种方法将同步ANT和Eclipse使用的类路径。
常春藤从Maven Central拉出了错误的模块。 PMD的最新版本是5.0.1:
我建议以下替代常春藤任务配置
<ivy:cachepath pathid="path.pmd">
<dependency org="net.sourceforge.pmd" name="pmd" rev="5.0.1" conf="default"/>
</ivy:cachepath>
注意:
启用PMD的一种可以说更简单的方法是使用Sonar ANT task,它还将使用Findbugs和Checkstyle分析您的代码。
也可以使用常春藤检索此任务:
<ivy:cachepath pathid="path.sonar">
<dependency org="org.codehaus.sonar-plugins" name="sonar-ant-task" rev="2.0" conf="conf"/>
</ivy:cachepath>
答案 2 :(得分:0)
转到Window-&gt; preferences-&gt; Ant-&gt; Problems选项卡。添加&#34; build.xml&#34;到忽略列表。 这应该可以解决你的问题。