我有很多需要自定义预处理的Java源代码。我想摆脱它,但现在不可行,所以我坚持下去。鉴于我有一个不应该存在的不幸问题,我如何使用maven解决它?
(总的来说,我正在用一个基于python的构建系统替换一个基于python的构建系统,所以请一次改进一次。修复非标准源代码更难,稍后会出现。)
是否可以使用任何现有的Maven插件在编译期间实际更改源文件? (显然只留下原始的,未经处理的代码)
要明确的是,通过预处理我的意思是预处理与天线相同或C编译器会对代码进行预处理,而且我认为它是完全专有的,并且看起来没什么,比如C或天线预处理。
答案 0 :(得分:9)
这是非常可行的事情,我过去做过非常相似的事情。
我的一个项目的一个例子,我使用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中生命周期的文档是here。另一个选择是实际编写自己的Maven插件来执行此操作。它有点复杂,但也很可行。您仍将按照我在此处记录的内容进行配置。
答案 1 :(得分:9)
有一个支持MAVEN的Java预处理器:java-comment-preprocessor
答案 2 :(得分:2)
Maven插件可以在编译前的时间挂钩到构建过程是的,至于任何现有的插件是否会帮助我不知道。
几年前我作为大学项目的一部分编写了一个maven插件,虽然当时文档有点缺乏,但它并不太复杂。所以你可以考虑自己动手,应该有很多开源项目你可以从中获取想法或代码(例如我们的BSD许可......)