包含一些生成文件的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)。 为什么我的编译器插件没有被触发?我该如何解决这个问题(going modular除外)?