java - Ant 映射器返回转义路径

标签 java ant

这并不是一个真正与 YUI 相关的问题。

我正在尝试对多个 JS 文件使用 YUI 压缩机(实际上是一个 .jar 应用程序)。我想自动获取这些文件(而不是在 build.xml 中指定每个文件的名称)。

这是我的 build.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<project name="CUIProject" default="prod">

<target name="-load.properties">
<loadproperties>
  <file file="minify.properties"/>
</loadproperties>
</target>

<!--Minify JS files-->
<target name="-js.minify">
<apply executable="java" parallel="false" dest="${build.dir}">
    <fileset dir="${src.dir}"/>
    <mapper>
        <globmapper from="*.js" to="*-min.js" handledirsep="yes"/>
    </mapper>
    <arg value="-jar"/>
    <arg path="${minifier.dir}"/>
    <srcfile/>
    <arg value="-o"/>
    <targetfile/>
</apply>
</target>


<!--Build-->
<target name="prod"
depends="
-load.properties,
-js.minify
">
</target>
</project>

问题是我收到 FileNotFound 异常,因为由于某种原因 <targetdir/>以某种方式逃脱: \ Windows 中的分隔符用作转义字符,因此我的路径只是一个非常大的单词。

如何避免这种行为?

最佳答案

我对 YUI 也有同样的问题。我发现最简单的方法是使用 Ant-Contrib <for>任务。

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <fileset dir="${antlib.dir}/antcontrib">
            <include name="*.jar"/>
        </fileset>
    </classpath>
</taskdef>

<!-- Minimize Concatinated JavaScript Files -->
<for param="concat.dir">
    <dirset dir="${work.js.dir}">
        <include name="*"/>
    </dirset>
    <sequential>
        <echo message="[java] Minimized @{concat.dir}/concat-${build.id}-min.js>"/>
        <java jar="${yui.compressor.jar}"
            failonerror="true"
            fork="true">
            <arg value="-o"/>
            <arg value="@{concat.dir}/concat-${build.id}-min.js"/>
            <arg value="@{concat.dir}/concat-${build.id}.js"/>
        </java>
    </sequential>
</for>

另请查看 <pathconvert> 任务。这会将路径分隔符从一种操作系统转换为另一种操作系统。这可能会解决您的问题。 File Mapper page Ant 手册中包含一些使用 <pathconvert> 的示例.

关于java - Ant 映射器返回转义路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17615709/

相关文章:

java - 使用 Micrometer 将 New Relic 与 Spring Boot 集成

java - Java 中的构造函数链接,何时调用 super?

java - 贾因 SIP : Identify inbound IP for SIP message when listening on 0. 0.0.0

java - 基于证书和IP的认证

java - ActiveMQ Java消费者抛出传输方案无法识别: [tcp]

java - 在 ant 脚本中模块化类路径(例如通过 refid)

java - 如何在模型中保存字段而不将其保留在数据库中?

bash - 根据文件所在的文件夹移动和重命名文件

java - 如何让 .jar 识别和使用捆绑的 log4j.xml 文件?

java - 实际参数不能通过方法调用转换来转换