我的pom.xml结构如下:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>
... some directories with .java files to compile.
...
<plugin> --- some my plugin that generates one more dir with .java files.
此时我想编译新生成的文件,所以我在这里重复步骤1,其中包含“includes”元素的不同内容。第二次编译根本不会发生。请指教。
答案 0 :(得分:1)
您的插件应该在generate-sources
阶段运行。然后,您必须确保在正常compile
阶段生成的源可用。
您的插件应配置如下:
<build>
<plugins>
<plugin>
<groupId>your.group</groupId>
<artifactId>your-generator-plugin</artifactId>
<version>your-generator-version</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>your-generator-goal</goal>
</goals>
<configuration>
<!-- Here goes all the plugin configuration -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可以直接从您的插件(mojo)添加要使用的编译源路径。
以下是您必须添加到mojo中的示例:
/**
* The current project representation.
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
/**
* Directory wherein generated source will be put; main, test, site, ... will be added implictly.
* @parameter expression="${outputDir}" default-value="${project.build.directory}/src-generated"
* @required
*/
private File outputDir;
必须在execute()
方法中添加类似内容:
if (!settings.isInteractiveMode()) {
LOG.info("Adding " + outputDir.getAbsolutePath() + " to compile source root");
}
project.addCompileSourceRoot(outputDir.getAbsolutePath());
这会将生成的java源文件输出到target/src-generated/
,但可以将其添加到mojo OR 中的其他默认值,方法是将其添加到插件的配置部分:
<outputDir>path/to/my/generated/source/</outputDir>
生成的java源文件将自动包含在compile
阶段。