问题描述
这是非常可行的,过去我做过非常类似的事情。
我的一个项目示例,我使用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或天线预处理那样。