generator-maven-plugin Maven Mojo

freemarker模板生成器插件

License

License

Categories

Categories

Maven Build Tools
GroupId

GroupId

io.github.wilson-he
ArtifactId

ArtifactId

generator-maven-plugin
Last Version

Last Version

0.2.6
Release Date

Release Date

Type

Type

maven-plugin
Description

Description

generator-maven-plugin Maven Mojo
freemarker模板生成器插件
Project URL

Project URL

https://github.com/Wilson-He/generator-maven-plugin
Source Code Management

Source Code Management

https://github.com/Wilson-He/generator-maven-plugin

Download generator-maven-plugin

How to add to project

<plugin>
    <groupId>io.github.wilson-he</groupId>
    <artifactId>generator-maven-plugin</artifactId>
    <version>0.2.6</version>
</plugin>

Dependencies

compile (15)

Group / Artifact Type Version
org.apache.maven : maven-plugin-api jar 3.6.0
org.apache.maven : maven-core jar 3.6.0
org.apache.maven.plugins : maven-resources-plugin jar 3.1.0
com.baomidou : mybatis-plus-extension jar 3.1.1
org.apache.velocity : velocity-engine-core jar 2.0
org.freemarker : freemarker jar 2.3.28
com.ibeetl : beetl jar 2.9.8
mysql : mysql-connector-java jar 8.0.16
org.apache.commons : commons-lang3 jar 3.9
org.springframework.boot : spring-boot-starter-web jar 2.0.3.RELEASE
com.google.guava : guava jar 27.1-jre
commons-io : commons-io jar 2.6
org.postgresql : postgresql jar 42.2.6
com.oracle.ojdbc : ojdbc8 jar 19.3.0.0
org.apache.maven.plugins : maven-clean-plugin maven-plugin 3.1.0

provided (2)

Group / Artifact Type Version
org.apache.maven.plugin-tools : maven-plugin-annotations jar 3.6.0
org.projectlombok : lombok jar 1.16.22

test (1)

Group / Artifact Type Version
junit : junit jar 4.12

Project Modules

There are no modules declared in this project.

generator-maven-plugin(版本更新信息)

  • 快速开始(mvn generator:generate)

    <plugin>
        <groupId>io.github.wilson-he</groupId>
        <artifactId>generator-maven-plugin</artifactId>
        <version>LATEST</version>
        <configuration>
            <basePackage>io.github.test</basePackage>
            <!-- 生成前是否清空target/generate-sources目录 -->
            <isCleanBefore>true</isCleanBefore>
            <dataSource>
                <url><![CDATA[jdbc:mysql://localhost:3306/wilson?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false]]></url>
                <username>root</username>
                <password>tiger</password>
            </dataSource>
        </configuration>
    </plugin>
    
  • 目前支持的配置项

    • outputDirectory: 输出绝对路径,默认生成到当前pom项目模块的target/generate-sources下
    • basePackage: 各层文件生成的基包[必填项]
    • isCleanBefore(boolean): 文件生成前是否清空当前模块下的target目录,默认false
    • useSwagger(boolean):生成文件是否带swagger注解,默认false
    • superEntityClass:entity父类,完整包路径.类名
    • author:文件author值,默认空
    • idType:String类型,用于设置实体id注解IdType,默认空-不生成mybatis-plus id注解,可取值如下:
      • AUTO:数据库ID自增
      • NONE:该类型为未设置主键类型
      • INPUT:用户输入ID,该类型可以通过自己注册自动填充插件进行填充
      • ID_WORKER:全局唯一ID(只有当插入对象ID为空,才自动填充)
      • UUID:全局唯一ID(只有当插入对象ID为空,才自动填充)
      • ID_WORKER_STR:字符串全局唯一ID(idWorker的字符串表示,只有当插入对象ID为空,才自动填充)
    • crudIdType:实体id类型,如Long
    • dataSource: 数据库配置[必填项]
      • url
      • username
      • password
      • driverType:数据库驱动类型,默认MYSQL(MYSQL,ORACLE,POSTGRE_SQL)
      • excludeConstantFields: 不生成指定字段常量类,如: is_delete,state
      • commentPattern: db字段注释中括号内的常量模板样式配置,key为常量的java变量名,value为变量名对应的常量值,comment为常量值注释,key、value、comment之间有且只有一个任意分隔符(逗号","除外), 若db字段注释只需key、comment(key=value)但仍需生成常量类,则key、comment间的分割符需为commentPattern中key、value、comment之间的分隔符之一,用例如下:
        • commentPattern为key-value:comment,可匹配如下db字段注释
          • 数据库is_delete(bit)字段注释:删除标志量(YES-1:已删除,NO-1:未删除),生成java常量为 /**已删除**/Integer YES = 1;/**未删除**/Integer NO = 0;
          • 删除标志量(YES-已删除,NO-未删除),生成java常量为 /**已删除**/String YES = "YES";/**未删除**/String NO = "NO";
          • 删除标志量(YES:已删除,NO:未删除),生成java常量为 /**已删除**/String YES = "YES";/**未删除**/String NO = "NO";
        • commentPattern为key:value:comment,可匹配如下db字段注释
          • 数据库is_delete(bit)字段注释:删除标志量(YES:1:已删除,NO:1:未删除),生成java常量为 /**已删除**/Integer YES = 1;/**未删除**/Integer NO = 0;
          • 删除标志量(YES:已删除,NO:未删除),生成java常量为 /**已删除**/String YES = "YES";/**未删除**/String NO = "NO";
      • bitToInteger:数据库bit类型转为java Integer类型,默认true,false将使bit转Boolean
    • templates: 自定义模板配置、模板生成配置,不配置则使用默认模板配置生成
      • entityPath: resources下的自定义entity模板相对路径
      • constantPath
      • daoPath
      • xmlPath
      • servicePath
      • serviceImplPath
      • controllerPath
      • entityPattern: entity名称样式,如:%sDO将以{tableName}DO命名生成
      • daoPattern
      • xmlPattern
      • servicePattern
      • serviceImplPattern
      • controllerPattern
      • excludeEntity: true/false,是否生成entity模板
      • excludeXxx: 同excludeEntity
      • excludeController: 默认true,其它层默认false
      • customs: 对象列表,自定义模板
        • layerName: 模板分层名(请勿使用已存在ftl变量)
        • subPackage: 所在子包
        • path: 模板在resources下的相对路径
    • exclusions: 字符串数组,不生成表名含数组内字符串的所有文件,默认空
    • inclusions: 字符串数组,只生成表名含数组内字符串的所有文件,默认空
    • upstreamExclusions: 字符串数组,不生成表名含数组内字符串的service、serviceImpl、controller文件,默认空
    • upstreamInclusions: 字符串数组,只生成表名含数组内字符串的service、serviceImpl、controller文件,默认空
    • logicDeleteFieldName: 全局逻辑删除字段名,默认空
    • tablePrefix: 字符串数组,表名前缀,默认空
    • jsonIgnores:在指定字段上添加jackson @JsonIgnore注解,多个字段用逗号分隔,例: password,salt,isDelete
  • ftl模板常用变量

    • package: 包路径变量,${package.xxx}

      • Entity: entity完整包路径,如io.github.test.entity
      • Mapper
      • Service
      • ServiceImpl
      • Controller
    • table: 表信息变量,${table.xxx}

      • comment: 注释
      • name: 表名
      • entityName: 当前表对应生成的entity文件名,如UserBase.java
      • constantName: 当前表对应生成的constant文件名,如UserBaseConstant.java
      • mapperName: 同上
      • xmlName: 同上
      • serviceName: 同上
      • serviceImplName: 同上
      • controllerName: 同上
      • fields: 字段列表,模板遍历<#list table.fields as field>,以下为field变量
        • table: 表名
        • propertyType: 属性类型
        • propertyName: 属性名
        • name: db字段名
        • comment: 字段注释
    • 详细配置例子

      • pom配置

        <plugin>
            <groupId>io.github.wilson-he</groupId>
            <artifactId>generator-maven-plugin</artifactId>
            <version>LATEST</version>
            <configuration>
                <basePackage>io.github.test</basePackage>
                <dataSource>
                    <url><![CDATA[jdbc:mysql://localhost:3306/wilson?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false]]></url>
                    <username>root</username>
                    <password>tiger</password>
                    <driverType>MYSQL</driverType>
                    <commentPattern>key:value-comment</commentPattern>
                </dataSource>
                <exclusions>
                    <!-- 不生成表名含relation字符串的所有文件,默认空 -->
                    <param>relation</param>
                </exclusions>
                <upstreamExclusions>
                    <!-- 不生成表名含一下关键字的自定义模板(如manager) 、service、serviceImpl、controller-->
                    <!-- <upstreamExclusion>detail</upstreamExclusion>效果同param-->
                    <param>detail</param>
                </upstreamExclusions>
                <templates>
                    <entityPath>/templates/custom-entity.java.ftl</entity>
                    <excludeServiceImpl>true</excludeServiceImpl>
                    <customs>
                        <param>
                            <path>/templates/manager.ftl</path>
                            <subPackage>manager</subPackage>
                            <layerName>Manager</layerName>
                        </param>
                    </customs>
                </templates>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        
      • /src/resources/templates/manager.ftl

        package ${package.Manager};
        
        /**<#if table.comment??>${"\n"} * <p>
         * ${entity}-${table.comment!}业务接口
         * </p>
         * </#if>
         * @author ${author}
         * @since ${date}
         */
        public class ${entity}Manager {
        
        }
        
    • 文档提示

      对一级标签CTRL+Q查看标签文档: tips

Versions

Version
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.0
0.0.4
0.0.3
0.0.2
0.0.1