代码之家  ›  专栏  ›  技术社区  ›  JesperE

从Ant调用FunBug:将空间分隔的文件列表传递给Java

  •  3
  • JesperE  · 技术社区  · 15 年前

    我在尝试从蚂蚁内部调用findbugs。为了控制findbugs可用的内存量,我选择不使用ant任务。现在的问题是,我想在命令行上向findbugs传递一些jar:

    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 PaTRAF是 逗号分隔 jar列表,而不是findbugs想要的空格分隔。如何将jar列表作为一个空格分隔的列表获取?

    (这可能更容易处理findbugs ant任务吗?我无法从文件中辨别。)

    3 回复  |  直到 14 年前
        1
  •  2
  •   martin clayton egrunin    14 年前

    使用 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>
    
        2
  •  1
  •   carej    15 年前

    使用<path convert>将路径转换为正确的格式,将其存储为属性,然后使用<arg value…>而不是<arg pathref…>

        3
  •  0
  •   rodrigoap    15 年前

    您可以通过Ant任务控制内存:

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