Предварительная обработка исходного кода как часть сборки maven - PullRequest
15 голосов
/ 09 октября 2008

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 10 октября 2008

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

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

9 голосов
/ 05 декабря 2011

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

2 голосов
/ 09 октября 2008

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

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

...