后端脚手架生成工程

后端脚手架生成工程

脚手架版本

  • 6.2.x(6.3.x/6.4.x)版本的脚手架,修改脚本(参考下节内容)中脚手架版本:

    # 新项目的pamirs platform version
    pamirsVersion=6.2.8
    ……
    # mvn archetype:generate执行片段中
    -DarchetypeVersion=6.2.8
  • 7.0.x版本的脚手架,修改脚本(参考下节内容)中脚手架版本:

    # 新项目的pamirs platform version
    pamirsVersion=7.0.5
    ……
    # mvn archetype:generate执行片段中
    -DarchetypeVersion=7.0.5 

后端脚手架生成工程

后端单工程脚手架

1、使用如下命令来用项目脚手架生成工程:新建archetype-project-generate.sh(bat) 脚本

  • archetype-project-generate.sh
#!/bin/bash

# 项目生成脚手架
# 用于新项目的构建

# 脚手架使用目录
# 本地 local
# 本地脚手架信息存储路径 ~/.m2/repository/archetype-catalog.xml
archetypeCatalog=local

# 以下参数以pamirs-demo为例

# 新项目的groupId
groupId=pro.shushi.pamirs.demo

# 新项目的artifactId
artifactId=pamirs-demo

# 新项目的version
version=1.0.0-SNAPSHOT

# Java包名前缀
packagePrefix=pro.shushi

# Java包名后缀
packageSuffix=pamirs.demo

# 新项目的pamirs platform version;根据上个章节中的版本介绍进行修改
pamirsVersion=6.2.8

# Java类名称前缀
javaClassNamePrefix=Demo

# 项目名称 module.displayName
projectName=OinoneDemo

# 模块 MODULE_MODULE 常量
moduleModule=demo_core

# 模块 MODULE_NAME 常量
moduleName=DemoCore

# spring.application.name
applicationName=pamirs-demo

# tomcat server address
serverAddress=0.0.0.0

# tomcat server port
serverPort=8090

# redis host
redisHost=127.0.0.1

# redis port
redisPort=6379

# 数据库名
db=demo

# zookeeper connect string
zkConnectString=127.0.0.1:2181

# zookeeper rootPath
zkRootPath=/demo

mvn archetype:generate \
  -DinteractiveMode=false \
  -DarchetypeCatalog=${archetypeCatalog} \
  -DarchetypeGroupId=pro.shushi.pamirs.archetype \
  -DarchetypeArtifactId=pamirs-project-archetype \
  -DarchetypeVersion=6.2.8 \  #根据上个章节中的版本介绍进行修改
  -DgroupId=${groupId} \
  -DartifactId=${artifactId} \
  -Dversion=${version} \
  -DpamirsVersion=${pamirsVersion} \
  -Dpackage=${packagePrefix}.${packageSuffix} \
  -DpackagePrefix=${packagePrefix} \
  -DpackageSuffix=${packageSuffix} \
  -DjavaClassNamePrefix=${javaClassNamePrefix} \
  -DprojectName="${projectName}" \
  -DmoduleModule=${moduleModule} \
  -DmoduleName=${moduleName} \
  -DapplicationName=${applicationName} \
  -DserverAddress=${serverAddress} \
  -DserverPort=${serverPort} \
  -DredisHost=${redisHost} \
  -DredisPort=${redisPort} \
  -Ddb=${db} \
  -DzkConnectString=${zkConnectString} \
  -DzkRootPath=${zkRootPath}
  • archetype-project-generate.bat
@echo off
:: 项目生成脚手架
set archetypeCatalog=local
set groupId=pro.shushi.pamirs.demo
set artifactId=pamirs-demo
set version=1.0.0-SNAPSHOT
set packagePrefix=pro.shushi
set packageSuffix=pamirs.demo
set pamirsVersion=6.2.8
set javaClassNamePrefix=Demo
set projectName=OinoneDemo
set moduleModule=demo_core
set moduleName=DemoCore
set applicationName=pamirs-demo
set serverAddress=0.0.0.0
set serverPort=8090
set redisHost=127.0.0.1
set redisPort=6379
set db=demo
set zkConnectString=127.0.0.1:2181
set zkRootPath=/demo

mvn archetype:generate ^
  -DinteractiveMode=false ^
  -DarchetypeCatalog=%archetypeCatalog% ^
  -DarchetypeGroupId=pro.shushi.pamirs.archetype ^
  -DarchetypeArtifactId=pamirs-project-archetype ^
  -DarchetypeVersion=%pamirsVersion% ^
  -DgroupId=%groupId% ^
  -DartifactId=%artifactId% ^
  -Dversion=%version% ^
  -DpamirsVersion=%pamirsVersion% ^
  -Dpackage=%packagePrefix%.%packageSuffix% ^
  -DpackagePrefix=%packagePrefix% ^
  -DpackageSuffix=%packageSuffix% ^
  -DjavaClassNamePrefix=%javaClassNamePrefix% ^
  -DprojectName="%projectName%" ^
  -DmoduleModule=%moduleModule% ^
  -DmoduleName=%moduleName% ^
  -DapplicationName=%applicationName% ^
  -DserverAddress=%serverAddress% ^
  -DserverPort=%serverPort% ^
  -DredisHost=%redisHost% ^
  -DredisPort=%redisPort% ^
  -Ddb=%db% ^
  -DzkConnectString=%zkConnectString% ^
  -DzkRootPath=%zkRootPath%

2、根据项目需求,根据脚本中的注释修改项目变量

3、确保Maven的settings文件是用的是数式发过去的对应的配置文件

4、Linux/Unix/Mac 需要执行以下命令添加执行权限; Windows下如果安装了git可以使用Git Bash执行Linux(sh)命令

chmod +x archetype-project-generate.sh

5、根据不同的操作系统执行脚手架命令
Linux/Unix/Mac/Windows(Git Bash):

 sh archetype-project-generate.sh 

Windows(CMD):

 archetype-project-generate.bat

6、执行完成后即可生成工程,生成的最终工程后根据实际情况进行一些修改

  • boot工程resources/static的index.html, 去掉前面3行多余的代码.( Velocity 模板变量问题导致)
    后端脚手架生成工程
  • 替换licence,包括licence文件和yml文件中licence的配置;
  • 替换yml文件中的OSS配置和中间件端口/地址/密码等;
  • 根据实际使用的版本情况,修改主pom中的版本号:
    <oinone-bom.version>7.0.5.1</oinone-bom.version>

    后端脚手架生成工程

后端多工程模块脚手架

1、使用如下命令来用项目脚手架生成模块工程:新建archetype-module-generate.sh(bat) 脚本

  • archetype-module-generate.sh
#!/bin/bash

# 模块生成脚手架
# 用于项目中构建新模块,注意: 该脚本应在项目根目录下执行

# 脚手架使用目录
# 本地 local
archetypeCatalog=local

# 以下参数以pamirs-demo为例

# 父项目的groupId
pamirsParentGroupId=pro.shushi.pamirs.demo

# 父项目的artifactId
pamirsParentArtifactId=pamirs-demo

# 父项目的version
pamirsParentVersion=1.0.0-SNAPSHOT

# 子项目的模块名
module=common

# 包名前缀
packagePrefix=pro.shushi

# 包名后缀
packageSuffix=pamirs.demo.common

# Java类名称前缀
javaClassNamePrefix=DemoCommon

# 项目名称
projectName=公共资源中心

# 模块 MODULE_MODULE 常量
moduleModule=demo_common

# 模块 MODULE_NAME 常量
moduleName=DemoCommon

# spring.application.name
applicationName=pamirs-demo-common

# tomcat server address
serverAddress=0.0.0.0

# tomcat server port
serverPort=8090

# 数据库名
db=demo

# zookeeper connect string
zkConnectString=127.0.0.1:2181

# zookeeper rootPath
zkRootPath=/demo

# redis host
redisHost=127.0.0.1

# redis port
redisPort=6379

mvn archetype:generate \
  -DinteractiveMode=false \
  -DarchetypeCatalog=${archetypeCatalog} \
  -DarchetypeGroupId=pro.shushi.pamirs.archetype.module \
  -DarchetypeArtifactId=pamirs-project-module-archetype \
  -DarchetypeVersion=7.0.5 \
  -DpamirsParentGroupId=${pamirsParentGroupId} \
  -DpamirsParentArtifactId=${pamirsParentArtifactId} \
  -DpamirsParentVersion=${pamirsParentVersion} \
  -DgroupId=${pamirsParentGroupId}.${module} \
  -DartifactId=${pamirsParentArtifactId}-${module} \
  -Dversion=${pamirsParentVersion} \
  -Dmodule=${module} \
  -Dpackage=${packagePrefix}.${packageSuffix} \
  -DpackagePrefix=${packagePrefix} \
  -DpackageSuffix=${packageSuffix} \
  -DjavaClassNamePrefix=${javaClassNamePrefix} \
  -DprojectName=${projectName} \
  -DmoduleModule=${moduleModule} \
  -DmoduleName=${moduleName} \
  -DapplicationName=${applicationName} \
  -DserverAddress=${serverAddress} \
  -DserverPort=${serverPort} \
  -Ddb=${db} \
  -DzkConnectString=${zkConnectString} \
  -DzkRootPath=${zkRootPath} \
  -DredisHost=${redisHost} \
  -DredisPort=${redisPort} \
  -Pshushi
  • archetype-module-generate.bat
@echo off
:: 模块生成脚手架
:: 用于项目中构建新模块,注意: 该脚本应在项目根目录下执行

:: 脚手架使用目录
:: 本地 local
set archetypeCatalog=local

:: 以下参数以kailas-libra-common为例

:: 父项目的groupId
set pamirsParentGroupId=pro.shushi.pamirs.demo

:: 父项目的artifactId
set pamirsParentArtifactId=pamirs-demo

:: 父项目的version
set pamirsParentVersion=1.0.0-SNAPSHOT

:: 子项目的模块名
set module=common

:: 包名前缀
set packagePrefix=pro.shushi

:: 包名后缀
set packageSuffix=pamirs.demo.common

:: Java类名称前缀
set javaClassNamePrefix=DemoCommon

:: 项目名称
set projectName=公共资源中心

:: 模块 MODULE_MODULE 常量
set moduleModule=demo_common

:: 模块 MODULE_NAME 常量
set moduleName=DemoCommon

:: spring.application.name
set applicationName=pamirs-demo-common

:: tomcat server address
set serverAddress=0.0.0.0

:: tomcat server port
set serverPort=8090

:: 数据库名
set db=demo

:: zookeeper connect string
set zkConnectString=127.0.0.1:2181

:: zookeeper rootPath
set zkRootPath=/demo

:: redis host
set redisHost=127.0.0.1

:: redis port
set redisPort=6379

mvn archetype:generate ^
  -DinteractiveMode=false ^
  -DarchetypeCatalog=%archetypeCatalog% ^
  -DarchetypeGroupId=pro.shushi.pamirs.archetype.module ^
  -DarchetypeArtifactId=pamirs-project-module-archetype ^
  -DarchetypeVersion=7.0.5 ^
  -DpamirsParentGroupId=%pamirsParentGroupId% ^
  -DpamirsParentArtifactId=%pamirsParentArtifactId% ^
  -DpamirsParentVersion=%pamirsParentVersion% ^
  -DgroupId=%pamirsParentGroupId%.%module% ^
  -DartifactId=%pamirsParentArtifactId%-%module% ^
  -Dversion=%pamirsParentVersion% ^
  -Dmodule=%module% ^
  -Dpackage=%packagePrefix%.%packageSuffix% ^
  -DpackagePrefix=%packagePrefix% ^
  -DpackageSuffix=%packageSuffix% ^
  -DjavaClassNamePrefix=%javaClassNamePrefix% ^
  -DprojectName=%projectName% ^
  -DmoduleModule=%moduleModule% ^
  -DmoduleName=%moduleName% ^
  -DapplicationName=%applicationName% ^
  -DserverAddress=%serverAddress% ^
  -DserverPort=%serverPort% ^
  -Ddb=%db% ^
  -DzkConnectString=%zkConnectString% ^
  -DzkRootPath=%zkRootPath% ^
  -DredisHost=%redisHost% ^
  -DredisPort=%redisPort% ^
  -Pshushi

2、后续脚本的执行请参考 后端单工程脚手架.

Oinone社区 作者:望闲原创文章,如若转载,请注明出处:https://doc.oinone.top/other/21573.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

Like (0)
望闲's avatar望闲数式管理员
Previous 2025年8月21日 pm2:13
Next 2025年8月26日 pm4:55

相关推荐

  • 如何设计公用跳转动作(类似导入导出动作)

    背景 设计一个公共动作,在界面设计器可以拖到页面里,点击之后跳转指定页面。就像导入导出一样。 实现思路 元数据计算时,初始化跳转动作,为本模块以及依赖于本模块的所有模块生成该跳转动作。实现所有模型都有该跳转动作的元数据。 代码示例: package pro.shushi.pamirs.top.core.init; import com.google.common.collect.Lists; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Component; import pro.shushi.pamirs.boot.base.enmu.ActionTargetEnum; import pro.shushi.pamirs.boot.base.enmu.ActionTypeEnum; import pro.shushi.pamirs.boot.base.model.ViewAction; import pro.shushi.pamirs.boot.common.api.command.AppLifecycleCommand; import pro.shushi.pamirs.boot.common.extend.MetaDataEditor; import pro.shushi.pamirs.core.common.InitializationUtil; import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j; import pro.shushi.pamirs.meta.api.dto.meta.Meta; import pro.shushi.pamirs.meta.api.dto.meta.MetaData; import pro.shushi.pamirs.meta.domain.model.ModelDefinition; import pro.shushi.pamirs.meta.enmu.ActionContextTypeEnum; import pro.shushi.pamirs.meta.enmu.SystemSourceEnum; import pro.shushi.pamirs.meta.enmu.ViewTypeEnum; import pro.shushi.pamirs.top.api.TopModule; import pro.shushi.pamirs.top.api.model.Teacher; import java.util.*; import java.util.stream.Collectors; @Slf4j @Component public class DemoModuleAppInstall implements MetaDataEditor { @Override public void edit(AppLifecycleCommand command, Map<String, Meta> metaMap) { InitializationUtil util = InitializationUtil.get(metaMap, TopModule.MODULE_MODULE, TopModule.MODULE_NAME); if (util == null) { return; } if (MapUtils.isEmpty(metaMap)) { return; } Set<String> dependencyFileModels = metaMap.values().stream() .filter(v -> v.getData().containsKey(TopModule.MODULE_MODULE)) .map(Meta::getModule) .collect(Collectors.toSet()); for (String module : metaMap.keySet()) { if (!dependencyFileModels.contains(module)) { // 不依赖本模块,不生成跳转动作 continue; } Meta meta = metaMap.get(module); MetaData metaData = meta.getCurrentModuleData(); List<ModelDefinition> modelList = metaData.getDataList(ModelDefinition.MODEL_MODEL); for (ModelDefinition data : modelList) { makeDefaultModelViewAction(meta, data, dependencyFileModels); } } } // 跳转的xml模版 name public static final String DEFAULT_VIEW_NAME = "fixed_teacher_table"; private void makeDefaultModelViewAction(Meta meta, ModelDefinition data, Set<String> dependencyFileModels) { if (!dependencyFileModels.contains(data.getModule())) { // 当前模块使用了其他模块的模型,对方模块未依赖本模块,不生成跳转动作 return; } Map<String, Object> context = new HashMap<>(); context.put("model", "'" + data.getModel() + "'"); // 创建 跳转表格页面 viewAction,根据实际需求更改 makeDefaultViewAction(meta, data, "teacherListDialog", "教师表格", null, ActionContextTypeEnum.CONTEXT_FREE, ViewTypeEnum.TABLE, 99, Teacher.MODEL_MODEL, DEFAULT_VIEW_NAME,…

    2025年10月22日
    68600
  • 自定义流程设计器审批人公司列表

    打开弹窗时会默认选中返回的第一个公司。 依赖: <dependency> <groupId>pro.shushi.pamirs.workflow</groupId> <artifactId>pamirs-workflow-api</artifactId> </dependency> 只显示所有公司 ALL_COMPANY 表示所有公司。 @Order(10) @Component @SPI.Service public class CustomWorkflowCompanyQueryApi implements WorkflowCompanyQueryApi { @Override public Pagination<PamirsCompany> queryPage(Pagination<PamirsCompany> page, IWrapper<PamirsCompany> queryWrapper) { Pagination<PamirsCompany> pageResult = new Pagination<>(); pageResult.setContent(Lists.newArrayList(ALL_COMPANY)); pageResult.setTotalPages(1); return pageResult; } } 不显示所有公司 @Order(10) @Component @SPI.Service public class CustomWorkflowCompanyQueryApi implements WorkflowCompanyQueryApi { @Override public Pagination<PamirsCompany> queryPage(Pagination<PamirsCompany> page, IWrapper<PamirsCompany> queryWrapper) { return new PamirsCompany().queryPage(page, queryWrapper); } } 仅显示特定公司 @Order(10) @Component @SPI.Service public class CustomWorkflowCompanyQueryApi implements WorkflowCompanyQueryApi { private static final Set<String> COMPANY_CODES = Sets.newHashSet("CH0001", "CH0002"); @Override public Pagination<PamirsCompany> queryPage(Pagination<PamirsCompany> page, IWrapper<PamirsCompany> queryWrapper) { Set<String> companyCodes = Sets.newHashSet("CH0001", "CH0002"); LambdaQueryWrapper<PamirsCompany> query = ((QueryWrapper<PamirsCompany>) queryWrapper).lambda(); query.in(PamirsCompany::getCode, COMPANY_CODES); return new PamirsCompany().queryPage(page, queryWrapper); } }

    2025年9月4日
    1.1K00
  • 后台嵌入其他系统的界面,设计器:嵌入网页组件

    管理后台如何新增Iframe嵌入其他系统的界面: 1、新建一个模型。模型中有放【url】的字段2、3、切换组件4、点击发布5、测试环境验证下,后端那个字段返回嵌入的【url】就可以展示这个url的内容了6、最后效果如下:

    2024年12月27日
    2.0K00

Leave a Reply

Please Login to Comment