いくつかの生成されたファイルを含む 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 がコンパイルされていないため)。コンパイラ プラグインがトリガーされないのはなぜですか? これを修正するにはどうすればよいですか (モジュラーにする以外に)?