【问题标题】:IntelliJ IDEA Template Variables Collide with XML PropertiesIntelliJ IDEA 模板变量与 XML 属性冲突
【发布时间】:2015-06-01 22:29:09
【问题描述】:

我发现自己对所有项目都使用了一个非常相似的 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 的值,但它确实会询问我basedirDSTAMP。 basedir和DSTAMP都需要设置(默认设置basedir,TStamp设置DSTAMP)。

我认为可能是这两个被选中,因为他们没有像这样的声明

<property name="foo" value="bar"/>

但我也使用了其他内置属性,例如 java.home,它们也没有声明,我也没有被要求提供这些。

我怎样才能解决这个问题并说服 IntelliJ 不理会这些属性,让 Ant 为它们提供价值?

【问题讨论】:

    标签: xml templates ant intellij-idea


    【解决方案1】:

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

    <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 很高兴。我仍然不知道它为什么这样做,尤其是对于这些值,但屏蔽它们似乎是一个有效的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 2014-10-21
      • 2019-03-07
      • 2017-07-20
      • 2014-01-12
      • 1970-01-01
      • 2011-09-19
      • 2017-05-15
      相关资源
      最近更新 更多