预处理源代码作为Maven构建的一部分

问题描述

这是非常可行的,过去我做过非常类似的事情。

我的一个项目示例,我使用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插件来执行此操作。它稍微复杂一点,但也是可行的。您仍将按照与我在此处记录的内容类似的方式进行配置。

解决方法

我有很多Java源代码,需要自定义预处理。我想摆脱它,但是现在不可行,所以我坚持了下来。鉴于我有一个不幸的问题,而这个问题本来不应该存在的,那么我该如何使用Maven解决这个问题呢?

(对于整个故事,我要用一个maven替换一个基于python的构建系统,因此请一次进行一次改进。修复非标准源代码会更加困难,并且将在以后发布。)

是否可以使用任何现有的Maven插件在编译时实际更改源文件?(显然,将原始的未经处理的代码留给了自己)

明确地说,通过预处理,我的意思是与天线或C编译器将对代码进行预处理的意义相同,而按照习惯,我的意思是它是完全专有的,根本不像C或天线预处理那样。