我发现自己为所有项目使用了非常相似的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
的值,然而它确实会问我basedir
和{{1} }。应该设置basedir和DSTAMP(默认设置为basedir,而TStamp设置DSTAMP)。
我认为可能会选择这两个,因为他们没有像
这样的声明DSTAMP
但我也使用其他内置属性,如<property name="foo" value="bar"/>
,它们也没有声明,我没有被要求提供。
我如何解决这个问题并说服IntelliJ单独留下这些属性,Ant会为它们提供价值?
答案 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很高兴。我仍然不知道为什么会这样做,特别是对于这些值,但屏蔽它们似乎确实是一个有效的解决方案。