Предварительная обработка исходного кода в составе сборки 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, который делает это. Это немного сложнее, но также выполнимо. Вы все равно настроите его так же, как я здесь документировал.
Ответ 2
Существует препроцессор Java с поддержкой MAVEN: java-comment-preprocessor
Ответ 3
Плагины Maven могут подключаться к процессу сборки во время предварительной компиляции да, так как будут ли какие-либо существующие из них помогать, я понятия не имею.
Я написал плагин maven пару лет назад в рамках университетского проекта, хотя в то время документации было немного не хватает, это было не слишком сложно. Таким образом, вы можете задуматься о том, как запустить свой собственный, должно быть много проектов с открытым исходным кодом, из которых вы можете копировать идеи или код (наш был BSD-лицензированный, например...)