работает над файлом сборки ANT, где у меня определены два макроса и мне нужно вызывать один макрос из другого.
Вот что мне нужно сделать (я упростил весь сценарий для облегчения понимания). Моя главная цель вызывает FirstMacro с двумя параметрами. Первый макрос должен сделать «что-то» с двумя полученными параметрами и сделать встроенный вызов SecondMacro.
Одним из параметров, передаваемых FirstMacro, является путь к файлу с обратной косой чертой (). Когда я печатаю его в макросе с помощью echo, он печатается нормально. Но когда я передаю тот же параметр в SecondMacro через JavaScript, обратная косая черта исчезает (вместо C: \ Test я вижу C: Test).
Как можно сохранить обратную косую черту или заменить ее на прямую косую черту.
Обратите внимание, что я использую ANT 1.7, и я уже пробовал string.replace (/ \ / g, "/") и т. Д.
Также обратите внимание, что вы можете скопировать и вставить весь приведенный ниже код, сохранить его как build.xml и попробовать запустить основную задачу, чтобы увидеть проблему в работе.
<?xml version="1.0"?>
<project name="build" basedir="." default="main">
<description>
==========================
Macro: Second Macro
==========================
</description>
<macrodef name="secondMacro">
<attribute name="param"/>
<sequential>
<echo>secondMacro param: @{param}</echo>
</sequential>
</macrodef>
<description>
==========================
Macro: FirstMacro
==========================
</description>
<macrodef name="firstMacro">
<attribute name="param1"/>
<attribute name="param2"/>
<sequential>
<echo>firstMacro first param: @{param1}</echo>
<echo>firstMacro second param: @{param2}</echo>
<script language="javascript">
<![CDATA[
var ext = "@{param2}";
if ("".equals(ext)) {
ext = "out";
}
macrotask = project.createTask("secondMacro");
macrotask.setDynamicAttribute("param", "@{param1}" + "."+ext );
macrotask.perform();
]]>
</script>
</sequential>
</macrodef>
<description>
==========================
Target: main target
==========================
</description>
<target name="main">
<firstMacro param1="C:\TestFolder/TestFile" param2=""/>
</target>
</project>