incloud开发文档 5.1.0 Help

代码生成

codegen做为后台专用的代码生成,功能上提供与线上数据建模类似的功能,但更轻量、简单,不需要启动其他服务,更不需要启动前端、中间件等,只需要能访问相应数据库即可。

下载incloud-code代码生成模块

使用以下链接下载:

代码生成子模块

并加入到你本地的maven子模块中,直接运行。 此依赖跟incloud主版本无关,按装本章节内容的依赖配置就好。

需要注意的是: 由于这里的maven依赖使用了os-maven-plugin,所以,需要在你的pom中单独配置os-maven-plugin,可以在工程的根Pom中配置,

<plugin> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.1</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>detect</goal> </goals> </execution> </executions> </plugin>

如果在根pom中配置os-maven-plugin,可以参考:

模块介绍-根pom.xml

代码结构

Incloud codegen

运行codeGenTest方法即可,此方法中包括build4Mac和build4Win两上方法,主要是针对mac和windows两个平台方便构建。

@Test public void build4Mac() { genService.generate("/Users/" + incloud_coder + "/gen/",appCode,tableName,comments,templatePacket,packageName,moduleName,tablePrefix,excludes); }
@Test public void build4Win() { genService.generate("D:/gen/",appCode,tableName,comments,templatePacket,packageName,moduleName,tablePrefix,excludes); }

参数解释

incloud_coder

代码作者,这个值可以直接从环境变量中获取,建议设置成系统环境变量,不要设置成idea变量,因为此值在个人电脑上是不会变的

    appCode

    生成的代码是哪一个应用的,此应用对应的app编码,它的作用主要是用来把生成的接口注册到openapi中

      packageName

      生成的代码所在的包名,此包名是基于项目的,如果是平台基础服务,此包名为com.netwisd.base, 如果是业务服务,此包名为com.netwisd.biz,如果是其他服务,此包名为com.netwisd.xxx

        moduleName

        生成的代码所在的模块名,此模块名是基于app的,一般建议跟app名称一致,如果app为portal,那么此模块名为portal, 如果app为mdm,那么此模块名为mdm,以此类推。

          tableName

          生成的代码对应的表名,表名应遵循【数据库表名规范

            comments

            表的注释,此注释是数据库中的表注释,设计表时,一定要给表加上注释,不但为生成的代码会加上注释,也更好运维和理解

              templatePacket

              代码生成的模板包名,包括single、single-wf,分别对应普通业务的表生成和带工作流字段和逻辑的代码生成。

                tablePrefix

                表前缀,此前缀是数据库中的表前缀,如:incloud_base_mdm_org,其中incloud_base_为前缀,前缀代表了区分于别的系统(incloud)、系统模块分类(base)、mdm(模块名)、org(具体业务名)

                  代码示例

                  @SpringBootTest @Slf4j @ComponentScan(basePackages = "com.netwisd.codegen.service") public class CodeGenTest { @Value("${INCLOUD_CODER}") private String incloud_coder; @Autowired private GenService genService; private final static String appCode = "main"; private String packageName = "com.netwisd.base"; private String moduleName = "mdm"; private String tablePrefix = "incloud_base_"; private String tableName = "incloud_base_mdm_org"; private String comments = "组织"; private String templatePacket = "single-wf"; private List excludes = CollectionUtil.newArrayList(ExcludesEnum.MAPPER_XML, ExcludesEnum.FEIGN); @Test public void build4Mac() { genService.generate("/Users/" + incloud_coder + "/gen/",appCode,tableName,comments,templatePacket,packageName,moduleName,tablePrefix,excludes); } @Test public void build4Win() { genService.generate("D:/gen/",appCode,tableName,comments,templatePacket,packageName,moduleName,tablePrefix,excludes); } }
                  @Component @Data public class GenService { @Value("${INCLOUD_CODER}") private String incloud_coder; @Autowired private CodeGenClient codeGenClient; @Value("${db.dbType}") private String dbType; @Value("${db.host}") private String host; @Value("${db.port}") private int port; @Value("${db.username}") private String username; @Value("${db.password}") private String password; @Value("${db.database}") private String database; @Value("${db.schema}") private String schema; @Value("${go.server.level}") private String goLogLevel; @Value("${go.server.path}") private String goLogPath; public void generate(String buildPath, String appCode, String tableName, String comments, String templatePacket, String packageName, String moduleName, String tablePrefix , List excludes){ codeGenClient.generatorCode(new GenConfig(dbType,host,port,username,password,database,schema,goLogLevel,goLogPath,appCode,incloud_coder,buildPath,packageName,moduleName,tablePrefix,tableName,comments,templatePacket,excludes.stream().map(ExcludesEnum::getName).toList())); } }
                  #日志输出控制 logging: level: root: info com.netwisd: debug file: name: logs/codegen.log db: dbType: mysql host: 192.168.0.79 port: ${INCLOUD_MYSQL_SERVICE_PORT} username: ${INCLOUD_DB_USER} password: ${INCLOUD_DB_PWD} database: ${INCLOUD_DB_SCHEMA} schema: ${INCLOUD_DB_SCHEMA} go: client: connect: false start: false server: level: debug path: logs/incloud-go

                  pom.xml

                  <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.netwisd</groupId> <artifactId>incloud</artifactId> <version>5.1.0-SNAPSHOT</version> </parent> <artifactId>incloud-codegen</artifactId> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-go-starter</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-go-code</artifactId> <version>1.0.0-SNAPSHOT</version> <classifier>${os.detected.classifier}</classifier> <type>bin</type> <scope>compile</scope> </dependency> </dependencies> </project>
                  Last modified: 20 一月 2025