Вызов FindBugs из Ant: передача списка файлов, разделенных пробелами, в java

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

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


person JesperE    schedule 31.08.2009    source источник


Ответы (3)


Используйте 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>
person Mads Hansen    schedule 31.08.2009
comment
у меня работает с <pathconvert pathsep=" " ...> и <arg line="...> - person Bernhard Döbler; 29.05.2015

Используйте ‹pathconvert›, чтобы преобразовать путь в правильный формат, сохранив его в свойстве, затем используйте ‹arg value...› вместо ‹arg pathref...›

person Community    schedule 31.08.2009

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

    <findbugs   jvmargs="-Xms512m -Xmx512m" ...>
      ...
   </findbugs>
person rodrigoap    schedule 31.08.2009