Фильтрация исходного кода в Maven - PullRequest
13 голосов
/ 05 ноября 2010

Я написал небольшой скрипт BeanShell, который заменяет "__LINE__" на фактический номер строки в исходном коде. Хорошо работает в Ant.

Я ищу способ фильтрации исходного кода в Maven, чтобы мой скрипт BeanShell мог сгенерировать новый каталог исходного кода, который затем компилируется.

Я знаю о фильтрации файлов ресурсов. Есть ли подобное средство для исходного кода?

1 Ответ

20 голосов
/ 27 августа 2013

Фильтрация исходного кода все еще была сложной несколько месяцев назад, но теперь в проекте MOJO есть стандартный плагин.Теперь вы можете сделать это с помощью классического объявления плагина.

Чтобы отфильтровать исходный код (например, когда вы хотите иметь константу в своем Java-коде для получения версии проекта или artifactId), вы должны теперьиспользуйте плагин templating-maven-plugin .

  1. . Поместите свой код, который должен фильтроваться во время сборки, в src/main/java-templates, как обычно в src/main/java длянефильтрованные источники.Используйте ${project.version} или любое другое свойство, поступающее из POM в вашем коде.

  2. Просто введите что-то вроде:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>templating-maven-plugin</artifactId>
      <version>1.0-alpha-3</version> <!-- Be sure to use the last version. Check on the website's plugin -->
      <executions>
          <execution>
          <id>filter-src</id>
          <goals>
              <goal>filter-sources</goal>
          </goals>
          </execution>
      </executions>
    </plugin>
    
  3. Готово:-).Код, который вы помещаете в src/main/java-templates, фильтруется и добавляется в путь к классам.

Использование очень простое (см. Пример здесь ).

Это гораздо лучше относится к идее соглашения о конфигурации Maven.В основном вы заменяете десятки строк XML и некоторые хаки, чтобы что-то сделать чисто.

Примечание: это отлично работает с Eclipse, например.

...