Подтвердить что ты не робот

Фильтрация исходного кода в Maven

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

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

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

4b9b3361

Ответ 1

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

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

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

  • Просто поместите что-то вроде:

    <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 plugin -->
      <executions>
          <execution>
          <id>filter-src</id>
          <goals>
              <goal>filter-sources</goal>
          </goals>
          </execution>
      </executions>
    </plugin>
    
  • Сделай:-). Код, который вы помещаете внутри src/main/java-templates, фильтруется и добавляется в путь к классам.

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

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

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