在编译所有代码之前编译并执行单个文件以生成代码

时间:2013-11-13 17:06:45

标签: maven

包含一些生成文件的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除外)?

0 个答案:

没有答案