С Maven, как бы я запретил Maven фильтровать некоторые свойства, но разрешать другие? - PullRequest
7 голосов
/ 07 мая 2010

Проблема в том, что я пытаюсь построить проект, в его ресурсах есть файл build.xml.По сути, я упаковываю свой проект как jar с Maven2, а затем использую ant installer для установки моего проекта.

В файле build.xml есть свойство, которое мне нужно отфильтровать, которое называется build.date, нодругие свойства, которые я не хочу фильтровать, например, $ {basedir}, потому что он используется установщиком ant, но заменяется переменной Maven basedir.Итак, мне нужно как-то сказать Maven фильтровать $ {build.date}, но не $ {basedir}.

Я попытался создать файл свойств в качестве фильтра с параметром "basedir = $ {basedir}" в качестве единицы.из свойств, но я получаю следующую ошибку:

Разрешение выражения: '$ {basedir}': обнаружен следующий цикл рекурсивных выражений: [basedir]

Любые предложения будут высоко оценены.

Спасибо,

BJ

1 Ответ

7 голосов
/ 07 мая 2010

Насколько мне известно, это невозможно, вы не можете запретить maven фильтровать данное свойство. Так что либо:

  • не используйте свойства Maven, такие как ${basedir} в вашем build.xml (если это возможно)
  • не используйте фильтрацию Maven, но используйте плагин Maven Antrun для замены ${build.date} и только этого свойства (см. этот ответ )
  • измените параметр delimiters плагина ресурсов и используйте, например, @build.date@ вместо ${build.date} в вашем build.xml

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.4.2</version>
      <configuration>
        <useDefaultDelimiters>false</useDefaultDelimiters>
        <delimiters>
         <delimiter>@</delimiter><!-- for Ant-like tokens style -->
        </delimiters>
      </configuration>
    </plugin>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...