15

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

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

是否可以在编译期间使用任何现有的 Maven 插件来实际更改源文件?(显然不理会原始的、未处理的代码)

需要明确的是,预处理是指与天线或 C 编译器预处理代码相同的预处理,而自定义是指它是完全专有的,看起来一点也不像 C 或天线预处理。

4

3 回答 3

9

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

于 2011-12-05T13:43:01.033 回答
8

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

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

于 2008-10-09T21:34:14.360 回答
2

Maven 插件可以在预编译时挂钩到构建过程是的,至于任何现有的插件是否有帮助我不知道。

几年前我写了一个 maven 插件作为大学项目的一部分,虽然当时文档有点缺乏,但它并不太复杂。所以你可能会考虑自己动手,应该有很多开源项目你可以从中提取想法或代码(例如,我们的项目是 BSD 许可的......)

于 2008-10-09T16:06:17.703 回答