gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:54:09 24 4
gpt4 key购买 nike

这并不是一个真正与 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com