我正在尝试从Ant内部调用FindBugs。为了控制FindBugs可用的内存量,我选择不使用ant-task。我现在遇到的问题是我想在命令行上将一些jar传递给FindBugs:
java -jar .../findbugs.jar foo.jar bar.jar fie.jar
但是,由于这些jar实际上是Eclipse插件,我不知道jar的确切名称,所以我需要一种方法来使用通配符来获取列表。这就是我想出来的:
<target name="findbugs">
<property name="findbugs.home" location="${user.home}/eclipse/findbugs" />
<path id="findbugs.input">
<fileset dir="${testDirectory}/eclipse/plugins">
<include name="my.plugins.*.jar" />
</fileset>
</path>
<path id="findbugs.auxinput">
<fileset dir="${testDirectory}/eclipse/plugins">
<include name="*.jar" />
<include name="**/*.jar" />
</fileset>
</path>
<java jar="${findbugs.home}/lib/findbugs.jar" fork="true">
<jvmarg value="-Xmx1048m" />
<arg value="-textui" />
<arg value="-output" />
<arg value="findbugs.xml" />
<arg value="-xml" />
<arg value="-exclude" />
<arg value="${basedir}/findbugsExclude.xml" />
<arg value="-auxclasspath" />
<arg pathref="findbugs.auxinput"/>
<arg pathref="findbugs.input" />
</java>
</target>
但是,findbugs.input
pathref是一个以逗号分隔的jar列表,而不像FindBugs想要的那样以空格分隔。如何将jar列表作为以空格分隔的列表?
(使用FindBugs ant任务可能更容易。我无法从文档中了解到。)
答案 0 :(得分:2)
使用pathconvert,如下所示:
<pathconvert pathsep="," property="findbugs.input.csv" refid="findbugs.input"/>
在您提供的目标中实施,我更改了<arg pathref="findbugs.input" />
的引用
到<arg value="${findbugs.input.csv}" />
<target name="findbugs">
<property name="findbugs.home" location="${user.home}/eclipse/findbugs" />
<path id="findbugs.input">
<fileset dir="${testDirectory}/eclipse/plugins">
<include name="my.plugins.*.jar" />
</fileset>
</path>
<pathconvert pathsep="," property="findbugs.input.csv"
refid="findbugs.input"/>
<path id="findbugs.auxinput">
<fileset dir="${testDirectory}/eclipse/plugins">
<include name="*.jar" />
<include name="**/*.jar" />
</fileset>
</path>
<echo message="${findbugs.input.csv}" />
<java jar="${findbugs.home}/lib/findbugs.jar" fork="true">
<jvmarg value="-Xmx1048m" />
<arg value="-textui" />
<arg value="-output" />
<arg value="findbugs.xml" />
<arg value="-xml" />
<arg value="-exclude" />
<arg value="${basedir}/findbugsExclude.xml" />
<arg value="-auxclasspath" />
<arg pathref="findbugs.auxinput"/>
<arg value="${findbugs.input.csv}" />
</java>
</target>
答案 1 :(得分:1)
使用&lt; pathconvert&gt;要将路径转换为正确的格式,将其存储到属性中,然后使用&lt; arg value ...&gt;而不是&lt; arg pathref ...&gt;
答案 2 :(得分:0)
您可以从ant任务控制内存:
<findbugs jvmargs="-Xms512m -Xmx512m" ...>
...
</findbugs>