data-generator/datagen-plugin/src/main/java/it/cavallium/datagen/plugin/MavenPlugin.java

60 lines
2.2 KiB
Java
Raw Normal View History

2023-04-20 10:11:12 +02:00
package it.cavallium.datagen.plugin;
2021-03-01 21:04:06 +01:00
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
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.project.MavenProject;
@Mojo(name = "run", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class MavenPlugin extends AbstractMojo {
@Parameter( required = true)
private File configPath;
@Parameter( required = true)
private String basePackageName;
2023-01-20 01:14:37 +01:00
@Parameter( required = true, defaultValue = "true")
private String deepCheckBeforeCreatingNewEqualInstances;
2023-01-22 12:39:54 +01:00
@Parameter( required = true, defaultValue = "false")
private String generateOldSerializers;
2022-03-09 12:53:16 +01:00
@Parameter( required = true, defaultValue = "false")
private String useRecordBuilder;
2023-04-20 20:22:07 +02:00
@Parameter(defaultValue = "false")
private String generateTestResources;
2021-03-01 21:04:06 +01:00
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
@Parameter(defaultValue = "${project}", required = true, readonly = false)
MavenProject project;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
SourcesGenerator sourcesGenerator = SourcesGenerator.load(configPath.toPath());
2023-04-20 20:22:07 +02:00
project.hasLifecyclePhase("generate-test-sources");
Path genRecordsPath = project.getBasedir().getAbsoluteFile().toPath().resolve("target").resolve(Boolean.parseBoolean(generateTestResources) ? "generated-test-sources" : "generated-sources").resolve("database-classes");
2021-03-01 21:04:06 +01:00
Path outPath = genRecordsPath.resolve("java");
this.project.addCompileSourceRoot(outPath.toString());
2023-01-22 12:39:54 +01:00
sourcesGenerator.generateSources(basePackageName, outPath, Boolean.parseBoolean(useRecordBuilder), false, Boolean.parseBoolean(deepCheckBeforeCreatingNewEqualInstances),
Boolean.parseBoolean(generateOldSerializers));
2021-03-01 21:04:06 +01:00
} catch (IOException e) {
throw new MojoExecutionException("Exception while generating classes", e);
}
getLog().info("Classes generated.");
}
}