All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.diamondfsd.codegen.SimpleCodeGen Maven / Gradle / Ivy

Go to download

simple code generate maven plugin. Template rendering through Java and freemarker.

There is a newer version: 1.1.1
Show newest version
package com.diamondfsd.codegen;

import com.diamondfsd.codegen.service.ICodeGenerator;
import com.diamondfsd.codegen.service.ITemplateRender;
import com.diamondfsd.codegen.service.impl.CodeGeneratorImpl;
import com.diamondfsd.codegen.service.impl.FreeMarkerTemplateRender;
import com.diamondfsd.codegen.vo.GeneratorConfig;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import java.io.File;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;

/**
 * 快速代码生成器
 * @author Diamond
 */
@Mojo(name = "codegen")
public class SimpleCodeGen extends AbstractMojo {

    @Parameter(property = "project.basedir", readonly = true)
    private File basedir;

    /**
     * 模板路径
     */
    @Parameter(defaultValue = "src/main/resources/code-template")
    private String templatePath;

    /**
     * 源码默认路径
     */
    @Parameter(defaultValue = "src/main/java/")
    private String sourcePath;

    /**
     * pojo格式 ModeName, PrimaryKeyType
     */
    @Parameter
    private String[] pojos;

    @Parameter
    private Map params;

    @Override
    public void execute() {
        GeneratorConfig config = new GeneratorConfig();
        config.setBaseDir(basedir.getAbsolutePath());
        config.setTargetPath(ifAbsolutePath(sourcePath, basedir.getAbsolutePath()));
        ICodeGenerator codeGenerator = new CodeGeneratorImpl(config);
        ITemplateRender templateRender = new FreeMarkerTemplateRender();
        Map params = Optional.ofNullable(this.params).orElse(Collections.emptyMap());

        try {
            for (String pojo : pojos) {
                String[] split = pojo.split(",");
                ModelDefine modelDefine = new ModelDefine(StringUtils.trimToEmpty(split[0]), StringUtils.trimToEmpty(split[1]));
                modelDefine.setParams(params);
                codeGenerator.codeGenerator(ifAbsolutePath(templatePath, basedir.getAbsolutePath()), modelDefine, templateRender);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String ifAbsolutePath(String path, String basePath) {
        boolean isAbsolutePath = path.startsWith("/") || path.startsWith("\\") || path.contains(":");
        if (isAbsolutePath) {
            return path;
        }
        return basePath + "/" + path;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy