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

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

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

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

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


person izb    schedule 09.10.2008    source источник


Ответы (3)


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

Пример из моего проекта, в котором я использовал плагин 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, который сделает это. Это немного сложнее, но тоже выполнимо. Вы по-прежнему будете настраивать его аналогично тому, что я здесь описал.

person Travis B. Hartwell    schedule 09.10.2008
comment
Это очень полезно, спасибо. Я думаю, что я борюсь с тем, как преобразовать код в копию этого кода, а затем заставить maven скомпилировать копию вместо оригинала. Я думаю, что, возможно, мне нужно лучше понять основы maven. - person izb; 20.10.2008
comment
-1: вы не отвечаете на вопрос, а просто предоставляете средства для его достижения. Другими словами, какие задачи вы ставите? - person Olivier Refalo; 22.07.2011

Есть препроцессор Java с поддержкой MAVEN: java-comment-preprocessor

person Igor Maznitsa    schedule 05.12.2011

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

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

person Keeg    schedule 09.10.2008