IntelliJ IDEA模板变量与XML属性冲突

时间:2013-07-25 04:06:19

标签: xml templates ant intellij-idea

我发现自己为所有项目使用了非常相似的Ant构建脚本,因此我决定对build.xml进行模板化。但是,IntelliJ IDEA的自定义模板变量(在您选择模板时要求它)的语法与Ant访问属性的语法完全相同。

${FULLY_QUALIFIED_CLASS_NAME} <- custom template variable that I leave undefined
${basedir}                    <- provided by Ant

请参阅thisthis

当我从模板生成文件时,我预计它会询问我FULLY_QUALIFIED_CLASS_NAME的值,然而它确实会问我basedir和{{1} }。应该设置basedir和DSTAMP(默认设置为basedir,而TStamp设置DSTAMP)。

我认为可能会选择这两个,因为他们没有像

这样的声明
DSTAMP

但我也使用其他内置属性,如<property name="foo" value="bar"/> ,它们也没有声明,我没有被要求提供。

我如何解决这个问题并说服IntelliJ单独留下这些属性,Ant会为它们提供价值?

1 个答案:

答案 0 :(得分:0)

我找到的解决方法是用略微不同的名称掩盖这两个特定值。例如,我使用了这条线

<property name="this.basedir" refid="basedir"/>

<dirname property="this.basedir" file="${ant.file}"/>
<!-- EDIT: for some reason, IntelliJ didn't like me refid'ing basedir.
     This works if ${ant.file} is in the project root. -->

避免键入导致问题的特定符号。我通过给TStamp一个前缀重命名DSTAMP:

<tstamp prefix="this"/>

现在我拨打${this.basedir}${this.DSTAMP},IntelliJ很高兴。我仍然不知道为什么会这样做,特别是对于这些值,但屏蔽它们似乎确实是一个有效的解决方案。