在开始部署Qcadoo MES之前,我们需要确保Windows系统已经准备好所有必要的环境。我遇到过不少开发者因为基础环境没配置好,导致后续编译过程频频报错的情况。为了避免大家走弯路,这里我把关键要点都列出来。
首先,Java环境是重中之重。Qcadoo MES推荐使用Java 8,但实测Java 11也能正常工作。建议安装JDK而不是JRE,因为编译过程需要用到javac等开发工具。安装完成后,记得设置JAVA_HOME环境变量,这个在后续Maven编译时会用到。验证方法是在cmd中运行java -version和javac -version,确保两个命令都能正确输出版本信息。
PostgreSQL数据库的安装也有讲究。最新版本的PostgreSQL 15可能和某些老版本的Qcadoo MES存在兼容性问题。我建议安装PostgreSQL 12或13,这是经过大量实践验证的稳定版本。安装时要注意两点:一是记住设置的超级用户密码,二是把PostgreSQL的bin目录加入系统PATH,方便后续使用psql命令行工具。
Maven的配置往往被新手忽视。Qcadoo MES的编译对Maven版本有严格要求,推荐使用3.6.x系列。太新的Maven版本反而可能引发依赖解析问题。安装后同样需要配置MAVEN_HOME环境变量,并在cmd中运行mvn -v验证。一个小技巧:在Windows系统中,最好把Maven的settings.xml文件中的本地仓库路径设置为较短的路径,比如D:\m2\repository,避免后续编译时因路径过长导致问题。
很多开发者第一次接触Qcadoo MES时,会对它的多模块结构感到困惑。我刚开始部署时也踩过坑,后来才明白这些模块之间的依赖关系。Qcadoo MES实际上由四个核心代码库组成,必须按特定顺序进行编译。
首先是qcadoo-super-pom-open,这是所有项目的父POM,定义了公共的依赖管理和插件配置。然后是qcadoo-maven-plugin,包含了Qcadoo特有的Maven插件。接着是qcadoo基础框架平台,最后才是mes业务应用模块。这种层级结构意味着我们必须严格按照这个顺序进行编译,否则肯定会失败。
下载源码时,我强烈建议使用git命令行工具而不是直接下载zip包。因为zip包可能会丢失一些git子模块信息。具体操作如下:
bash复制git clone https://github.com/qcadoo/qcadoo-super-pom-open.git
git clone https://github.com/qcadoo/qcadoo-maven-plugin.git
git clone https://github.com/qcadoo/qcadoo.git
git clone https://github.com/qcadoo/mes.git
这里有个细节要注意:mes项目中有个子模块mes-application,这是最终要部署的web应用。在后续编译时,我们需要特别注意这个模块的特殊配置。
编译Qcadoo MES是个需要耐心的过程,每个模块的编译都可能遇到各种问题。根据我的经验,90%的编译错误都是由于依赖问题或环境配置不当引起的。
第一步编译qcadoo-super-pom-open相对简单。进入项目目录后运行:
bash复制mvn clean install
这个过程通常比较顺利,但如果遇到网络问题导致依赖下载失败,可以尝试配置阿里云的Maven镜像。
qcadoo-maven-plugin的编译也很直接,同样使用mvn clean install命令。但这里有个坑要注意:如果之前编译失败过,最好先删除本地仓库中org/qcadoo目录下的所有内容,避免残留的错误依赖影响新编译。
qcadoo基础框架的编译需要加上-DskipTests参数:
bash复制mvn clean install -DskipTests
这个编译过程会比较长,可能要20-30分钟。期间如果出现内存不足的情况,可以设置MAVEN_OPTS环境变量增加内存:
bash复制set MAVEN_OPTS=-Xmx2048m -XX:MaxPermSize=512m
最复杂的要数mes模块的编译。除了基本的mvn clean install -DskipTests外,mes-application模块需要特殊处理:
bash复制mvn clean install -DskipTests -Ptomcat -Dprofile=package
这里最容易出现的问题就是缺少bootstrap.jar。这个依赖是Tomcat的核心组件,但默认不在Maven中央仓库中。解决方法如下:
bash复制mvn install:install-file -Dfile="C:\path\to\bootstrap.jar" -DgroupId=org.apache.tomcat -DartifactId=bootstrap -Dversion=8.5.12 -Dpackaging=jar
版本号一定要和项目POM中要求的保持一致,否则还是会报错。
Qcadoo MES使用PostgreSQL作为默认数据库,正确的数据库配置能避免很多运行时问题。我建议专门为Qcadoo MES创建一个新的数据库用户,而不是直接使用postgres超级用户。
首先创建数据库和用户:
sql复制CREATE USER qcadoo WITH PASSWORD 'your_password';
CREATE DATABASE mes WITH OWNER qcadoo;
GRANT ALL PRIVILEGES ON DATABASE mes TO qcadoo;
初始化数据库时,可以使用项目自带的demo_db_en.sql脚本。这个脚本位置在:
code复制mes/mes-application/src/main/resources/schema/demo_db_en.sql
导入数据时要注意字符集问题。我遇到过Windows下直接运行psql命令导入数据出现乱码的情况。解决方法是指定编码:
bash复制psql -U qcadoo -d mes -f demo_db_en.sql --set=client_encoding=UTF8
application.properties文件的配置也很关键。除了基本的数据库连接信息外,建议把Hibernate的ddl-auto设置为validate而不是update,避免自动修改数据库结构:
properties复制spring.datasource.url=jdbc:postgresql://localhost:5432/mes
spring.datasource.username=qcadoo
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=validate
使用IntelliJ IDEA运行Qcadoo MES可以极大提升开发效率,但配置过程有几个容易出错的地方。我总结了一套稳定的配置方法,供大家参考。
首先要用IDEA打开mes项目,而不是mes-application。因为mes-application是子模块,单独打开会导致依赖解析不全。打开项目后,IDEA会自动识别Maven项目并开始下载依赖,这个过程可能需要一些时间。
Tomcat配置是最大的难点。Qcadoo MES使用嵌入式Tomcat,这和我们平时部署WAR包到独立Tomcat的方式有所不同。正确的配置步骤如下:
如果启动时报ClassNotFound异常,很可能是依赖没有正确加载。可以尝试以下解决方案:
mvn clean install -DskipTests -Ptomcat -Dprofile=package重新打包启动成功后,访问http://localhost:8080应该能看到登录页面。默认管理员账号是admin/admin,首次登录后记得立即修改密码。
即使按照上述步骤操作,在实际部署中仍可能遇到各种问题。这里我分享几个常见问题的解决方法。
启动时报数据库连接错误:首先检查application.properties中的配置是否正确。如果确认无误,可能是PostgreSQL的pg_hba.conf文件没有配置允许本地连接。可以尝试修改该文件,添加:
code复制host all all 127.0.0.1/32 md5
然后重启PostgreSQL服务。
页面加载缓慢:Qcadoo MES默认使用开发模式,可以修改application.properties开启生产模式:
properties复制spring.profiles.active=prod
qcadoo.security.performCheck=true
同时建议调整Tomcat的内存参数,在IDEA的VM options中添加:
code复制-Xms1024m -Xmx2048m -XX:MaxPermSize=512m
静态资源无法加载:这通常是因为浏览器缓存了旧版本资源。可以强制刷新缓存(Ctrl+F5),或者在URL后添加版本号参数如?v=1。
自定义插件开发:如果想基于Qcadoo MES开发自己的插件,建议先在开发环境中测试。创建一个新的Maven项目,依赖mes-core,然后按照Qcadoo的插件开发规范编写代码。调试时可以使用远程调试模式,在IDEA中配置Remote JVM Debug,连接端口8000。
当开发测试完成后,如果需要将Qcadoo MES部署到生产环境,有几个重要事项需要注意。
数据库备份策略:建议设置定期的PostgreSQL数据库备份。可以使用pg_dump工具创建备份:
bash复制pg_dump -U qcadoo -F c -b -v -f "mes_backup.dump" mes
日志管理:生产环境应该配置更详细的日志记录。修改logback-spring.xml文件,调整日志级别和输出路径:
xml复制<property name="LOG_PATH" value="/var/log/qcadoo" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
安全加固:除了修改默认密码外,还应该:
性能监控:可以使用Java Melody等工具监控系统性能。在pom.xml中添加依赖:
xml复制<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.90.0</version>
</dependency>
然后在web.xml中添加相应的过滤器配置。
高可用方案:对于关键生产环境,建议部署多节点集群。可以通过Nginx实现负载均衡,后端部署多个Qcadoo MES实例,共享同一个PostgreSQL数据库。记得修改application.properties中的集群配置:
properties复制qcadoo.cluster.enabled=true
qcadoo.cluster.nodeId=node1