2013-07-25 1 views
0

Я нахожу, что использую очень похожий скрипт сборки Ant для всех своих проектов, поэтому я решил создать шаблон build.xml. Однако синтаксис для настраиваемых переменных шаблона IntelliJ IDEA (который он запрашивает при выборе шаблона) точно такой же, как синтаксис Ant для доступа к свойствам.Переменные шаблона IntelliJ IDEA сталкиваются с XML-свойствами

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

См this и this

Когда я генерировать файл из шаблона, я ожидал, что он будет просить у меня ценности FULLY_QUALIFIED_CLASS_NAME, и это было, однако, он также просил меня basedir и DSTAMP. Должны быть установлены как basedir, так и DSTAMP (basedir устанавливается по умолчанию, а DSTAMP задается TStamp).

Я думал, что это может быть, что эти два выбраны потому, что они не имеют декларацию как

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

, но я также использовать другие встроенные свойства, как java.home, которые также не имеют деклараций, и меня не просили об этом.

Как я могу обойти это и убедить IntelliJ оставить эти свойства в покое, что Ant предоставит им значение?

ответ

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. --> 

, чтобы не вводить конкретное обозначение, которое вызывает проблему. Я переименовал DSTAMP, давая TSTAMP префикс:

<tstamp prefix="this"/> 

так что теперь я называю ${this.basedir} и ${this.DSTAMP} и IntelliJ счастлив. Я до сих пор не знаю, почему он это делает, и для этих значений, в частности, но маскировка их действительно является допустимым решением.