Moqui 之 开发环境搭建

序言

moqui-framework是ofbiz作者的又一力作,相比于ofbiz,moqui的体系结构,模块划分更加清晰,这里我不在详细描述,本文主要介绍moqui开发环境的搭建,如读者想对moqui有更多了解,请访问如下传送门:


开发环境搭建之源码导入

我们的开发环境为:

  • JDK 1.7 (或以上)

  • Intellij IDEA (笔者版本为15.02)

  • Gradle v2.9 

其中,Gradle项不是必须,moqui的源码中包含有Gradle Wrapper配置,但是笔者还是建议读者配置独立版的Gradle。在下文中,笔者的环境为独立版Gradle,而非Gradle Wrapper。

下面正式开始我们的开发环境搭建环节




下载源码

此部分比较简单,直接进入命令行,使用如下命令即可从github下载moqui的最新源码,这里我们对moqui版本的选择为master分支,也就是最新版.

git clone https://github.com/moqui/moqui-framework.git

下载完成后,将会看到一个 moqui-framework 的文件夹,此文件夹内即为moqui的源码。

初次运行Moqui

源码下载完成后,我们来尝试运行下moqui,执行如下命令:

cd moqui-framework
gradle load run

注意:

  • 第一条命令行语句仅仅是为了进入到moqui源码的文件夹,如果您命令行当前已经处于moqui源码的根目录,则不需要执行此命令

  • 第二条语句是在独立安装Gradle的环境下使用,如果使用的是Gradle Wrapper,则需要使用  gradlew load run 命令来运行 moqui

  • 初次运行Gradle会自行下载相关依赖包,请耐心等待

  • 当命令输出  Winstone Servlet Engine v1.7.0 running: controlPort=disabled  的时候,则说明moqui启动成功,此时可打开浏览器,访问 http://localhost:8080 来访问moqui。

  • 运行Moqui是会占用8080端口,请确保在运行 gradle load run 命令前8080端口号没有被占用


源码导入IDEA

将源码导入IDEA并不复杂,步骤如下

  1. 打开IDEA,选择  Import Project

  2. 在弹出的目录选择窗口中,选择之前下载的moqui源码根目录

  3. 目录选择完后,会弹出一个窗口,我们选择 Import project from external model,然后选中此选项里的Gradle 选项,然后选择 Next  

  4. 之后,IDEA会让我们选择Gradle的使用方式(wrapper 或者 本地安装版),这里笔者选择的为: use local gradle distribution , Gradle JVM 为Gradle所使用的JDK版本,这里选择1.7或以上版本即可。点击 Finish 按钮,耐心等待片刻之后,会出现选择Gradle工程的窗口,直接点击OK即可,之后,moqui源码就正确的导入到了IDEA中。

  5. 由于Moqui对JDK的版本要求最低为1.7,因此,我们需要将项目的语言级别设置为1.7或以上,具体设置方式为: 鼠标选中项目,右键选择 Open Module Settings(或快捷键F4),在弹出的窗口中选择 Project,然后将 Project Language Level 修改为 7 或以上即可。

  6. Moqui使用了Groovy,因此需要给项目添加Groovy支持,当然,IDEA中不添加也是可以的,但是为了更高的开发,建议添加,具体添加方式为项目右键,选择 Add Framework Support,在弹出的窗口中选择groovy即可。


Moqui Debug

由于种种原因,在IDEA中无法直接启动或者调试moqui,moqui的启动类为 MoquiStart.java,有兴趣的可以尝试下在IDE中直接启动。

在和Moqui的作者 David E. Jones 发邮件沟通后,David给我说不建议我直接在IDE中启动,建议使用命令行启动moqui,使用java的远程debug功能来调试moqui,对于远程debug,eclipse和IDEA都支持的很好。

下面来说下如何debug。


打开moqui源码根目录下的 build.gradle,找到如下部分:

// ========== run tasks ==========

task run(type: JavaExec) {
    dependsOn getRuntime, allBuildTasks, cleanTempDir
    workingDir = '.'; jvmArgs = ['-server', '-XX:MaxPermSize=192m', '-XX:-OmitStackTraceInFastThrow']; maxHeapSize = '512M'
    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]
}

此部分为运行moqui的task,在下面添加一个runDebug task,如下:

task run(type: JavaExec) {
    dependsOn getRuntime, allBuildTasks, cleanTempDir
    workingDir = '.'; jvmArgs = ['-server', '-XX:MaxPermSize=192m', '-XX:-OmitStackTraceInFastThrow']; maxHeapSize = '512M'
    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]
}
task runDebug(type: JavaExec) {
    dependsOn getRuntime, allBuildTasks, cleanTempDir
    workingDir = '.'; jvmArgs = ['-server','-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005' ,'-XX:MaxPermSize=192m', '-XX:-OmitStackTraceInFastThrow']; maxHeapSize = '512M'
    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]
}

请注意runDebug部分中的jvmArgs部分,我们对run部分新增了一个jvm参数,为-agentlib,此部分即为开启远程debug,端口号为 5005。

做完之后,使用命令行启动moqui,命令为:

gradle runDebug


在命令行启动完moqui后,我们需要对IDEA进行设置:

  1. 找到Edit Configurations选项并打开(此选项在 Run 图标左边的下拉箭头菜单里)

  2. 点击 + 按钮, 选择 Remote

  3. 如果 runDebug 部分没有使用 5005 端口,请将Settings 部分的 Port 选项修改为对应的端口号

  4. 如果需要,可修改此配置的 Name 

  5. 完成后,剩下工作就是添加断点,启动调试,触发断点,观察变量了


最后,如果需要观察moqui的启动过程,即给 MoquiStart 类添加断点,可以将runDebug task里的 suspend=n 修改为 suspend=y ,具体参数含义可自行搜索学习。

转载于:https://my.oschina.net/xuchenglong/blog/625552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值