1

我在编译之前添加了一个 ant 任务来格式化源代码。但是,格式化程序在提供文件路径列表时会出现裁剪器,并在作为 java Ant 任务运行时跳过(无法读取)文件。单独或作为批处理运行与脚本相同的脚本不会产生相同的错误。

这是 java Ant 任务的问题吗?在 java 任务中设置 fork = "True" 没有效果。返回的结果代码仍然是 1。

bash 脚本可在我的存储库LearnJava中找到。

这些脚本是:buildant、buildantall、format 和 formatall。

Build.xml 和 build.properties 在每个项目目录下。

您可以尝试单独运行脚本的项目是 Facade2 和 Composite2。

您至少需要 JDK 8 才能编译所有内容。JDK 7 将适用于除使用 lambda 表达式的 Composite2 之外的所有其他项目。

提前致谢。

蚂蚁任务设置如下:

<target name="gformat">
    <exec executable="find" dir="${basedir}"
        failonerror="true" outputproperty="sources">
        <arg line=" . -type f -name '*.java'"/>
    </exec>

    <echo message="About to format ...: ${sources}"/>

    <java classname="${gformat.main.class}">
        <arg line=" -i ${sources}"/>
        <classpath>
            <pathelement location="../${gformat.jar}"/>
            <pathelement path="${java.class.path}"/>
        </classpath>
    </java>
</target>

通过将 exec 任务替换为以下内容,我能够修复上述错误:

<fileset dir="${basedir}" id="javasrcs">
      <include name="**/*.java" />
    </fileset>
    <pathconvert property="sources" refid="javasrcs" pathsep=" " />

现在,如何关闭此查询?

4

1 回答 1

0

find 任务的问题在于它在每个文件名之间放置了一个行分隔符,而不是格式化程序在命令行中期望的空格字符。解决方案是使用 grep 并将行分隔符替换为空格,或者使用上面指定的空格分隔符的 ant 任务。

于 2019-12-20T07:14:35.773 回答