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

2022-09-03 14:12:52

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

(对于完整的故事,我正在用一个maven系统替换一个基于python的构建系统,所以请一次改进一个。修复非标准源代码更难,稍后会来。

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

需要明确的是,通过预处理,我的意思是预处理与天线或C编译器相同的意义上的预处理将预处理代码,而通过自定义,我的意思是它完全是专有的,看起来根本不像C或天线预处理。


答案 1

有一个支持MAVEN的Java预处理器:java-comment-preprocessor


答案 2

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

我的一个项目的例子,我使用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插件来执行此操作。这有点复杂,但也是可行的。您仍将以类似于我在这里记录的内容进行配置。


推荐