0

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

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

看到这个这个

当我从模板生成一个文件时,我预计它会询问我 的值FULLY_QUALIFIED_CLASS_NAME,它确实做到了,但是,它也询问了我的值basedirDSTAMP。basedir 和 DSTAMP 都应该设置(basedir 默认设置,DSTAMP 由TStamp设置)。

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

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

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

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

4

1 回答 1

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

于 2013-07-25T04:37:17.230 回答