一个带有一些生成文件的 Maven 项目:
my.package.R // generated from resources
my.package.ClassThatGeneratesRFromResources
my.package.AClassThatUsesR
my.package.AnotherClassThatUsesR
my.package.YetAnotherClassThatUsesR
构建时,我想编译 ClassThatGeneratesRFromResources,执行它(从而生成 R.java 类),然后一起编译其他所有内容。
我可以使用模块、反应器和在它自己的小模块中隔离 ClassThatGeneratesRFromResources 来完成这项工作。但是,我想知道为什么我的丑陋、笨重的解决方案不起作用。这是我当前的POM:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>
generate-r-file-creator
</id>
<configuration>
<phase>generate-sources</phase>
<goal>compile</goal>
<includes>
<include>my/package/ClassThatGeneratesRFromResources.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>generate-r-files</id>
<phase>process-sources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>my.package.ClassThatGeneratesRFromResources</mainClass>
<arguments>
<argument>${basedir}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
结果是初始编译器运行失败,然后代码生成运行也失败(因为 ClassThatGeneratesRFromResources 尚未编译)。为什么我的编译器插件没有被触发?我该如何解决这个问题(除了模块化)?