后端脚手架生成工程

后端脚手架生成工程

脚手架版本

  • 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低代码应用平台体验

(0)
望闲的头像望闲数式管理员
上一篇 2025年8月21日 pm2:13
下一篇 2025年8月26日 pm4:55

相关推荐

  • Excel导出模块翻译值

    由于目前翻译资源导出只可以导出应用资源,无法导出模块资源,所以暂时提供以下方法导出模块资源。6.2.11、5.7.4.20 之前版本验证 方案一: 导出环境覆盖以下类 package pro.shushi.pamirs.translate.template.imports; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import pro.shushi.pamirs.file.api.context.ExcelDefinitionContext; import pro.shushi.pamirs.file.api.entity.ExcelExportFetchDataContext; import pro.shushi.pamirs.file.api.extpoint.impl.DefaultExcelExportFetchDataExtPoint; import pro.shushi.pamirs.file.api.model.ExcelExportTask; import pro.shushi.pamirs.framework.connectors.data.sql.Pops; import pro.shushi.pamirs.framework.connectors.data.sql.query.LambdaQueryWrapper; import pro.shushi.pamirs.framework.connectors.data.sql.query.QueryWrapper; import pro.shushi.pamirs.meta.annotation.Ext; import pro.shushi.pamirs.meta.annotation.ExtPoint; import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j; import pro.shushi.pamirs.meta.api.Models; import pro.shushi.pamirs.meta.api.dto.wrapper.IWrapper; import pro.shushi.pamirs.meta.common.lambda.LambdaUtil; import pro.shushi.pamirs.meta.common.util.PStringUtils; import pro.shushi.pamirs.meta.constant.SqlConstants; import pro.shushi.pamirs.meta.domain.module.ModuleDefinition; import pro.shushi.pamirs.resource.api.enmu.TranslationApplicationScopeEnum; import pro.shushi.pamirs.resource.api.model.ResourceTranslation; import pro.shushi.pamirs.resource.api.model.ResourceTranslationItem; import pro.shushi.pamirs.translate.constant.TranslateConstants; import pro.shushi.pamirs.translate.proxy.TranslationItemExportProxy; import pro.shushi.pamirs.translate.service.TranslationDslNodeVisitor; import pro.shushi.pamirs.translate.template.TranslateTemplate; import pro.shushi.pamirs.translate.utils.UniversalParser; import java.util.*; import java.util.stream.Collectors; import static pro.shushi.pamirs.translate.constant.TranslateConstants.FIELD_TO_EXCLUDE; /** * @author Adamancy Zhang * @date 2020-11-04 18:09 */ @Slf4j @Component @Ext(ExcelExportTask.class) @SuppressWarnings({"unchecked"}) public class ResourceTranslationExportExtPoint extends DefaultExcelExportFetchDataExtPoint { private String resLangCodeColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getResLangCode)); private String langCodeColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getLangCode)); private String moduleColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getModule)); @Override @ExtPoint.Implement(expression = "context.name=="" + TranslateTemplate.TEMPLATE_NAME + "" && context.model=="" + ResourceTranslation.MODEL_MODEL + """) public List<Object> fetchExportData(ExcelExportTask exportTask, ExcelDefinitionContext context) { ArrayList<Object> objects = new ArrayList<>(); Map<String, Object> queryData = exportTask.getConditionWrapper().getQueryData(); TranslationItemExportProxy data = JSON.parseObject(JSON.toJSONString(queryData), TranslationItemExportProxy.class); LambdaQueryWrapper<TranslationItemExportProxy> queryWrapper = Pops.<TranslationItemExportProxy>lambdaQuery() .from(TranslationItemExportProxy.MODEL_MODEL) .eq(StringUtils.isNotBlank(data.getModule()), ResourceTranslationItem::getModule, data.getModule()) .eq(ResourceTranslationItem::getResLangCode, TranslateConstants.RES_LANG_CODE) .eq(StringUtils.isNotBlank(data.getLangCode()), ResourceTranslationItem::getLangCode, data.getLangCode()) .eq(data.getState() != null, ResourceTranslationItem::getState, data.getState()) .like(StringUtils.isNotBlank(data.getResLangInclude()), ResourceTranslationItem::getOrigin, data.getResLangInclude()) .like(StringUtils.isNotBlank(data.getTargetInclude()), ResourceTranslationItem::getTarget, data.getResLangInclude()); Map<String, String> moduleNameMap = Models.origin().queryListByWrapper(Pops.<ModuleDefinition>lambdaQuery() .from(ModuleDefinition.MODEL_MODEL) .eq(StringUtils.isNotBlank(data.getModule()), ModuleDefinition::getModule, data.getModule())) .stream() .collect(Collectors.toMap(ModuleDefinition::getModule, ModuleDefinition::getDisplayName, (_a, _b)…

    2025年8月21日
    44400
  • 自定义字段样式

    在日常开发中,我们经常会遇到需要根据业务规则动态展示字段样式的场景,比如表格、表单或详情中的某些字段需要改变文字颜色。本文将通过一个具体的案例,带大家实现这一功能。 以下以 自定义表格字段文字颜色 为例。 实现步骤 1. 在界面设计器中添加组件 通过界面设计器,添加一个组件 2. 创建元件 以表格的「金额字段」为例,创建对应的元件(可根据自己的业务场景调整)。 3. 配置元件属性 进入元件设计页面,从组件库中拖入「单行文本」到设计区域。在右侧属性面板中填写相关配置并保存 4. 保存元件 完成配置后,保存元件。 5. 发布元件 将元件发布,供页面设计使用。 6. 切换表格字段 进入页面设计器,将表格中的字段切换为刚刚创建的元件。 7. 配置字段颜色 在右侧属性面板中,配置字段的文字颜色: 固定颜色:直接输入颜色值(如 red)。 动态颜色:输入表达式,根据业务逻辑动态展示颜色。例如:当前行的名称等于 1 时显示红色,否则为蓝色。 示例表达式: activeRecord.name === '1' ? 'red' : 'blue' 8: 在代码中,自定义对应的表格字段 import { SPI, BaseFieldWidget, ModelFieldType, ViewType, TableCurrencyFieldWidget, Widget, RowContext, numberZeroFill, numberAddThousandth, Expression, ExpressionRunParam } from '@kunlun/dependencies'; import { toString } from 'lodash-es'; import { createVNode, VNode } from 'vue'; @SPI.ClassFactory( BaseFieldWidget.Token({ viewType: [ViewType.Table], ttype: [ModelFieldType.Currency], widget: 'TableCurrencyColor' }) ) export class TableCustomCurrencyFieldWidget extends TableCurrencyFieldWidget { computedFieldColor(context: RowContext) { const { fieldColor = ' ' } = this.getDsl(); if (!fieldColor) { return null; } // 如果当前颜色是表达式,则需要计算 if (Expression.hasKeywords(fieldColor)) { const params: ExpressionRunParam = { activeRecords: [context.data], rootRecord: {}, openerRecord: {}, scene: '' }; return Expression.run(params, fieldColor, fieldColor)!; } return fieldColor; } @Widget.Method() public renderDefaultSlot(context: RowContext): VNode[] | string { let value = numberZeroFill(toString(super.compute(context)), this.getPrecision(context)); if (this.getShowThousandth(context)) { value = numberAddThousandth(value); } return [ createVNode( 'div', { style: { color: this.computedFieldColor(context) } }, value ) ]; } } 9: 页面效果图

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

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

    2024年12月27日
    1.3K00
  • 开放应用中的ip黑白名单

    IP白名单配置 入口:集成应用>开放管理>应用>授权调整>IP白名单配置 IP白名单取请求头中的X-Forwarded-For属性的最后一个值,X-Forwarded-For以英文,分割ip地址。 X-Forwarded-For: clientIP, proxy1IP, proxy2IP, …, proxyNIP 根据 RFC 7239 标准所述,X-Forwarded-For含义如下: clientIP:最左边的 IP,表示最初发起请求的客户端 IP(即真实用户 IP)。 proxyXIP:从左往右依次为中间各级代理服务器的 IP。 最右边的 IP:表示离当前 Web 服务器最近的一层代理服务器(IP白名单拦截的此IP)。 Nginx配置示例 以Nginx为例,为确保X-Forwarded-For拿到的是真实的IP地址,需要增加配置。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; IP黑名单配置 入口:集成应用>开放管理>应用>黑名单 取值来源:从请求头 X-Real-IP 中提取客户端 IP。 验证逻辑: 若 X-Real-IP 不存在,直接拦截并返回异常提示:未获取到真实IP地址。 检查提取的 IP 是否在阻止列表中。 相关文章 IP黑白名单实现拦截三方用户

    2025年5月15日
    53300

Leave a Reply

登录后才能评论