是否有一种简单的方法可以在构建配置中转义用于变量替换的魔术字符,以便单独保留字符串。换句话说,我在哪里说:
[part]
attribute = ${variable}
我实际上并不希望它扩展 ${variable} 而是将其保留为文字值。
在实践中,我遇到的具体问题不在构建配置文件本身,而是在配方“collective.recipe.template”处理的模板文件中。这使用了与配置文件中使用的构建相同的变量替换引擎。问题是我想用作模板的文件已经将“${variable}”语法用于其自身目的以及最终使用该文件的应用程序配置系统。
我发现解决这个问题的唯一方法是使用类似的东西:
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
在模板输入文件中,然后有:
${dollar}{variable}
代替:
${variable}
它已经有了。
这样做是在使用模板的部分中查找“美元”属性并将其替换为“$”。
而不是必须这样做,有点希望可以这样做:
\${variable}
或者甚至:
$${variable}
并消除了必须有一个虚拟属性来欺骗它做我想做的事情的需要。
查看 buildout 的源代码,它匹配变量替换的方式似乎没有提供转义机制。
如果确实没有办法,那么也许有人知道用于构建的替代模板配方可以进行变量扩展,但为它指示变量的任何方式提供了一种转义机制,这样就可以避免可能存在冲突的问题模板系统扩展机制和被模板化文件中的文字数据。