- 导入moqui源码至eclipse
- 命令行使用gradle编译项目(没有安装gradle的请自行google)
- 设置gradle编码格式 使其支持代码中出现中文
${moqui.home}/framework/MoquiInit.properties
tasks.withType(Compile) { options.compilerArgs << "-Xlint:unchecked" options.encoding = "UTF-8" }
- 将moqui数据源改成mysql
${moqui.home}/framework/src/main/resources/MoquiDefaultConf.xml
删除或注释掉derby数据源,新增mysql数据源(需自行在数据库中建库)
<datasource group-name="transactional" database-conf-name="mysql" check-pks-on-start="false"> <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiTransactional?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" jdbc-username="root" jdbc-password="asb#1234" pool-minsize="2" pool-maxsize="50"/> </datasource> <datasource group-name="analytical" database-conf-name="mysql" check-pks-on-start="false"> <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiAnalytical?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" jdbc-username="root" jdbc-password="asb#1234" pool-minsize="2" pool-maxsize="50"/> </datasource> <datasource group-name="tenantcommon" database-conf-name="mysql" check-pks-on-start="false"> <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiTenant?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" jdbc-username="root" jdbc-password="asb#1234" pool-minsize="2" pool-maxsize="50"/> </datasource>
将mysql jdbc驱动包拷贝至
${moqui.home}/framework/lib/mysql-connector-java-5.1.25.jar
添加${moqui.home}/framework/build.gradle 中编译依赖
runtime name: 'mysql-connector-java', version: '5.1.25' // Apache 2.0
重新编译moqui并加载种子数据
$ gradle build
$ gradle load
运行
$ gradle run
- 禁止Atomikos疯狂打印日志
运行moqui控制台不停输出如下内容
--- 110318 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 110529 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 110741 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 110953 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 111163 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 111419 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 111634 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 111844 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
--- 112052 [ Atomikos:0] WARN com.atomikos.icatch.imp.CoordinatorImp
Local heuristic termination of coordinator 192.168.1.58.tm0025000005 with state HEUR_HAZARD
修改${moqui.home}/framework/src/main/resources/log4j.xml
<category name="com.atomikos"> <!-- NOTE: this is "atomikos" isntead of "com.atomikos" because that is how Atomikos is setup --> <priority value="error"/> </category>
- 开启远程debug
在${moqui.home}/build.gradle添加
task debug(type: JavaExec) { dependsOn allBuildTasks dependsOn cleanTempDir workingDir = '.'; jvmArgs = ['-server', '-XX:MaxPermSize=128m', '-Xnoagent','-Djava.compiler=NONE','-Xdebug','-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8091']; maxHeapSize = '256M' systemProperties = ['moqui.conf':moquiConfDev, 'moqui.runtime':moquiRuntime] // NOTE: this is a hack, using -jar instead of a class name, and then the first argument is the name of the jar file main = '-jar'; args = [warName] }
进入debug模式
$ gradle debug