2009-08-31 2 views
3

Я пытаюсь вызвать FindBugs изнутри Ant. Чтобы контролировать объем памяти, доступный для FindBugs, я решил не использовать ant-task. Проблема у меня есть сейчас, что я хочу передать несколько баночек в командной строке для FindBugs:Вызов FindBugs из Ant: передача списка файлов, разделенных пробелами, на java

java -jar .../findbugs.jar foo.jar bar.jar fie.jar 

Однако, поскольку эти банки на самом деле Eclipse, плагины, я не знаю точное название поэтому мне нужен способ использовать подстановочный знак для получения списка. Это то, что я придумал:

<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 является разделенный запятыми список банок, а не разделенных пробелами, как FindBugs хочет. Как получить список банок в виде списка, разделенного пробелами?

(Это, возможно, проще сделать с FindBugs муравьиный задачи. Я не могу сказать, из документации.)

ответ

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> 
+0

работает для меня с ' 'и'

1

< Использование PathConvert > преобразовать путь в правильном формате, сохраняя его в свойство затем использовать < ARG значение ... > вместо < агд pathref ... >

0

Вы можете управлять памятью от муравьиного задачи:

<findbugs jvmargs="-Xms512m -Xmx512m" ...> 
     ... 
    </findbugs>