Предварительная обработка исходного кода в составе сборки maven

У меня есть много исходного кода Java, для которого требуется специальная предварительная обработка. Я бы хотел избавиться от него, но это невозможно сейчас, поэтому я застрял с ним. Учитывая, что у меня есть неудачная проблема, которая не должна существовать в первую очередь, как мне ее решить, используя maven?

(Для всей истории я заменяю систему сборки на основе python на maven one, поэтому одно улучшение за раз, пожалуйста. Исправление нестандартного исходного кода сложнее и придет позже.)

Возможно ли использование любых существующих плагинов Maven для фактического изменения исходных файлов во время компиляции? (Очевидно, оставляя исходный, необработанный код один)

Чтобы быть ясным, с помощью предварительной обработки я имею в виду предварительную обработку в том же смысле, что и антенна или компилятор С, предварительно обработала бы код, и пользовательский я имею в виду, что он полностью запатентован и не выглядит совсем не так, как C или предварительная обработка антенны.

Ответы

Ответ 1

Это что-то очень выполнимое, и я сделал что-то очень похожее в прошлом.

Пример из моего проекта, где я использовал плагин antrun для выполнения внешней программы для обработки источников:

  <build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <id>process-sources</id>
          <phase>process-sources</phase>
          <configuration>
            <tasks>
               <!-- Put the code to run the program here -->
            </tasks>
          </configuration>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

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

Ответ 3

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

Я написал плагин maven пару лет назад в рамках университетского проекта, хотя в то время документации было немного не хватает, это было не слишком сложно. Таким образом, вы можете задуматься о том, как запустить свой собственный, должно быть много проектов с открытым исходным кодом, из которых вы можете копировать идеи или код (наш был BSD-лицензированный, например...)