目录
概述
开发环境
配置过程
后端启动
前端启动
登陆系统
其他
概述
Compiere闭源之后衍生出了Admpiere等若干开源的产品,metasfresh就是其中之一,metasfresh截至发稿时在GitHub上已有64000多次的修改提交,而且仍在维护中,其中5.175版本于23年6月分发布,具体可参考metasfresh的Github站点。
metasfres平台架构上采用了前后端分离的方式,前端js,可以单独部署,后端java+spring,可提供轻量端的web方式访问和传统的swing客户端方式访问,不同访问方式根据后端的服务类型来确定。
metasfres在与其他类型的java语言为主的erp项目相比,配置上还是有些复杂,这里就根据metasfresh社区提供的安装说明(参考:Development environment guide with Intellij and Docker-Compose - Setup - metasfresh ERP - Community forum)对配置过程中遇到的问题及解决方法进行了记录,供metasfresh爱好者参考。
开发环境
操作系统:Windows11
IDE工具:IDEA 2024 Ultimate
Java:jdk8(5.175分支),jdk17(master分支),maven3
Nodejs:16(测试版本过高,前端启动后接受请求时会报错)
RabbitMQ :3.11.16(可参考社区安装配置链接中使用docker来提供)
PostgreSQL:10(可参考社区安装配置链接中使用docker来提供)
配置过程
- 代码下载,git项目源码到本地,这里需要注意的是目录规划,metasfresh开发环境的目录规划应当是:
projectroot(假定你准备在这里完成metasfresh开发环境的配置)
+.idea(idea项目文件夹,idea自动生成)
+-----metasfresh(git到这一层)
+----application.properties(metasfresh子目录\misc\dev-support下复制过来的配置文件目录)
- 启动idea打开projectroot目录,然后退出(此步仅完成idea的项目目录的生成),将metasfresh\misc\dev-support\intellij-idea目录下的.idea下 的内容复制到projectroot下的idea中(覆盖原有内容)
- 修改或复制本机maven配置文件,将metasfresh\misc\dev-support\maven下的settings.xml复制到本机的maven默认目录中(Windows,默认在%userprofile%\.m2)覆盖或者自行合并内容。主要是以下的xml节点,合并是可根据本地文件内容进行修改,同时注意在<activeProfiles>节点将此内容添加,否则不会生效:
<id>env-dev</id>
- 打开命令行终端,确定java_home环境变量以及git可执行文件路径已经配置到命令行终端环境中,可通过查看。
java -version mvn -v git -v
- 执行maven安装,在命令行顺序切换到metasfresh\misc\parent-pom,metasfresh\misc\de-metas-common,metasfresh\backend,执行maven安装:
mvn -T 2C -DskipTests clean install
安装过程中如果出现如下错误,则需要调整metasfresh\misc\parent-pom\pom.xml,在git-commit-id-plugin插件的configuration配置项中增加nativeGitTimeoutInMs,插件默认的是30000毫秒,也就是30秒,将这个值设置的更大些,就不会报下面的错误了:
- 再次启动idea,首先检查项目的jdk版本是否与source的版本匹配,分别选择metasfresh\backend\pom.xml以及metasfresh\misc\parent-pom\pom.xml,metasfresh\misc\de-metas-common\pom.xml,在选中文件右键菜单中选择“添加为Maven项目”,等待加载完成即可。
- idea中选择backend项目的pom.xml,执行maven菜单的generate source and folder(生成源码和目录),子项目中如果存在找不到类的错误,可以选择对应子项目的pom.xml单独生成,如果未出现找不到类错误,可忽略此步。
- metasfresh的前端配置比较简单,在命令行切换到metasfresh\frontend,执行npm install即可,如果遇到依赖错误,则在命令行中增加--legacy-peer-deps参数
- 建立数据库用户metasfresh/metasfresh(默认的,如果不同则需要修改application.properties下的相关文件,开发环境简化处理均使用默认的)导入初始数据。初始下载链接(https://metasfresh.com/wp-content/releases/db_seeds/metasfresh_latest.pgdump)。
- idea中执行Run SQL Migrations运行配置
后端启动
- 启动RabbitMQ(如果RabbitMQ 的服务端口不是5672,需要修改projectroot\application.properties\metasfresh\backend\metasfresh-webui-api\application.properties,将spring.rabbitmq.port设置为实际的端口)。
- idea中启动WebRestApiApplication,启动前检查配置参数中 -DPropertyFile路径,由于从metasfresh\misc\dev-support\intellij-idea目录拷贝的配置中,默认使用的路径是C:\work-metas,因此需要修改为实际的路径。另外,开发环境可不使用elastic search,需要增加vm参数-Delastic_enable=false。
前端启动
- 复制metasfresh\config.js.dist到metasfresh\config.js
- 可通过idea中的start WEB-UI启动项启动或者通过命令行终端启动
登陆系统
- 通过:http://localhost:3000/,默认用户名,密码均为metasfresh,这里需要注意地址不能是127.0.0.1,否则会报跨域错误,如果希望通过ip访问,则需要修改metasfresh\config.js以及数据库中的记录,select * from AD_SysConfig WHERE Name='webui.frontend.url',即数据库中的值需要与metasfresh\config.js一致才不会报跨域错误,这个值是数据系统配置的参数,可以通过swing端访问修改,也可以直接修改数据库记录
其他
metasfresh的swing端访问,在idea中分别启动ServerBoot和SwingUIApplication即可,登陆用户同轻量端。
metasfresh本地化处理可登陆管理员权限,导出多语言文件(xml格式),翻译后再执行导入(还未经测试)