
com.heliorm.mojo.GenerateModel Maven / Gradle / Ivy
package com.heliorm.mojo;
import com.heliorm.Database;
import com.heliorm.Table;
import com.heliorm.mojo.annotated.AnnotatedPojoGenerator;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.*;
import org.apache.maven.project.MavenProject;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import static java.lang.String.format;
/**
* @author gideon
*/
@Mojo(name = "generate-model", defaultPhase = LifecyclePhase.PROCESS_CLASSES,
requiresDependencyResolution = ResolutionScope.COMPILE)
public class GenerateModel extends AbstractMojo {
@Parameter(property = "strategy", required = true)
private Generator.PojoStrategy strategy;
@Parameter(property = "packages", required = true)
private Set packages;
@Parameter(property = "outputDir", required = true)
private String outputDir;
@Parameter(property = "resourceDir", required = true)
private String resourceDir;
@Parameter(property = "database", required = true)
private String database;
@Parameter(property = "databaseClass")
private String databaseClass;
@Component
private MavenProject project;
private ClassLoader localClassLoader;
private ClassLoader globalClassLoader;
private Modeller> modeller;
public GenerateModel() {
}
@Override
public void execute() throws MojoExecutionException {
try {
setupClassLoader();
Generator> gen;
if (Objects.requireNonNull(strategy) == Generator.PojoStrategy.annotated) {
gen = new AnnotatedPojoGenerator(this, packages);
} else {
throw new MojoExecutionException(format("Unsupported POJO strategy '%s'. BUG?", strategy));
}
File dir = new File(resourceDir + "/META-INF/services/");
if (!dir.exists()) {
dir.mkdirs();
}
modeller = new Modeller<>(gen, packages);
Map packageDatabases = modeller.getPackageDatabases();
PrintWriter svc = new PrintWriter(new FileWriter(resourceDir + "/META-INF/services/" + Database.class.getCanonicalName()));
Set
© 2015 - 2025 Weber Informatics LLC | Privacy Policy