import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
import org.opendaylight.controller.yang.model.api.Module;
import org.opendaylight.controller.yang.model.api.SchemaContext;
import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
* </ol>
* </ol>
*/
-@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
+@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES,requiresDependencyResolution=ResolutionScope.COMPILE,requiresProject=true)
public final class YangToSourcesMojo extends AbstractMojo {
private static final String LOG_PREFIX = "yang-to-sources:";
@Parameter(required = true)
private String yangFilesRootDir;
- private final YangModelParser parser;
+
+ @Parameter(property = "project", required = true, readonly = true)
+ protected MavenProject project;
+
+
+ private transient final YangModelParser parser;
@VisibleForTesting
YangToSourcesMojo(CodeGeneratorArg[] codeGeneratorArgs,
* Instantiate generator from class and call required method
*/
private void generateSourcesWithOneGenerator(SchemaContext context,
- CodeGeneratorArg codeGenerator) throws ClassNotFoundException,
+ CodeGeneratorArg codeGeneratorCfg) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
- codeGenerator.check();
+ codeGeneratorCfg.check();
CodeGenerator g = Util.getInstance(
- codeGenerator.getCodeGeneratorClass(), CodeGenerator.class);
+ codeGeneratorCfg.getCodeGeneratorClass(), CodeGenerator.class);
getLog().info(
Util.message("Code generator instantiated from %s", LOG_PREFIX,
- codeGenerator.getCodeGeneratorClass()));
+ codeGeneratorCfg.getCodeGeneratorClass()));
+ File outputDir = codeGeneratorCfg.getOutputBaseDir();
+ project.addCompileSourceRoot(outputDir.getPath());
Collection<File> generated = g.generateSources(context,
- codeGenerator.getOutputBaseDir());
+ outputDir);
getLog().info(
Util.message("Sources generated by %s: %s", LOG_PREFIX,
- codeGenerator.getCodeGeneratorClass(), generated));
+ codeGeneratorCfg.getCodeGeneratorClass(), generated));
}
}