背景
SAP Commerce(Hybris)作为SAP旗下的电商模块,主要分为B2B和B2C两块。一直以来,由于种种原因,对hybris项目资料甚少,且不完整,遂整理一版,方便查阅。
本文以windows电脑启动为例。
环境准备
1、JDK17以上
2、maven3.0以上
3、也是最重要的需要SAP Commerce基础包
以最新稳定版本2205为例,需要一个有权限的sap账号去对应的平台下载一个zip文件,文件名类似 CXCOMM220500P_X-XXXXXXXX.zip。
解压后完整目录如下:
下载链接如下:
注册登录后,进入SAP for Me页面,搜索SAP Commerce 2205,就能够下载。
注意,这个网站可以私人注册,但是无法下载我们需要的zip包,通常来说,需要特殊授权的公司账号,才能下载对应的zip包。
下面是我的私人账号,可以搜索,但是没有对应的下载内容。
模板启动
完成环境准备后,就可以直接以模板的方式来启动项目。
在官方这种启动方式叫做Recipe,翻译成中文就是食谱或者菜谱,有点按着食谱做菜的意思。
这种方式之所以能启动,要简单说说Hybris这个项目的结构,通过前面的2205.zip的压缩包解压,我们得到了一系列文件夹,其中负责启动的项目的文件位于hybris\bin\platform目录下面,其中有一个hybrisserver.bat脚本用于启动项目,其主要作用是把各种扩展模块的项目文件,复制到tomcat容器对应的文件夹下面,然后启动tomcat,就可以访问对应的资源。
如果是常规的启动,需要在hybris\config的localextensions.xml配置各种自定义的扩展模块,然后以特定的顺序来启动项目。
但是以Recipe的方式来启动,则是直接通过脚本配置好了对应的扩展模块,然后把内容复制到对应的config文件夹下面,进行项目的初始化启动。
项目提供了四个模板进行启动,位于installer\recipes文件夹下
通常我们会使用cx这个文件夹来进行项目启动,其实本质就是一个gradle脚本,来安装一些预先定义好的模块。
进入cx文件夹,可以直接看到安装说明:
大致意思是,进入installer文件夹,依次执行三步动作,就可以启动项目。
这里给出window下的执行命令,进入installer文件夹,cmd命令执行如下脚本:
install.bat -r cx setup -A local_property:initialpassword.admin=nimda & install.bat -r cx initialize -A local_property:initialpassword.admin=nimda & install.bat -r cx start
三个命令,启动platform,初始化项目,启动项目,设置admin密码,这里设置的是nimda。
注意,这是第一次启动,之后可以直接使用
install.bat -r cx start
命令直接启动即可。
在等待1-2小时,当出现如下提示,项目就成功启动了。
可以通过https://localhost:9002/backoffice进入后台管理界面。
当然也可以通过指定的url进入我们的b2b或者b2c模块的电商首页:
在进入之前先设置一下本机的host文件配置:
127.0.0.1 apparel-uk.local apparel-de.local electronics.local powertools.local
这是由于同时启动了多个项目,需要不同的url来进行访问:
B2B首页:
- http://powertools.local:9001/yb2bacceleratorstorefront
B2C首页:
- http://electronics.local:9001/yacceleratorstorefront
- http://apparel-de.local:9001/yacceleratorstorefront
- http://apparel-uk.local:9001/yacceleratorstorefront
常规启动
经过本人实测,在以模板启动的方式启动项目后,仍可以通过hybris\bin\platform文件夹下面的hybrisserver.bat脚本启动项目,也从另一个角度证明了,模板启动只是常规启动的快捷方式,其本质,代码编辑及环境配置没有差异。
下面介绍正常启动方式,即正式项目中的启动方式。
1 设置环境变量
设置ant环境变量,由于hybris主要有ant来进行编译,且项目中已经自带了ant版本,所以只需要在hybris\bin\platform文件夹下,执行setantenv.bat脚本即可。
脚本内容如下:
@echo off
set ANT_OPTS=-Xmx2g -Dfile.encoding=UTF-8 -Dpolyglot.js.nashorn-compat=true -Dpolyglot.engine.WarnInterpreterOnly=false --add-exports java.xml/com.sun.org.apache.xpath.internal=ALL-UNNAMED --add-exports java.xml/com.sun.org.apache.xpath.internal.objects=ALL-UNNAMED
set ANT_HOME=%~dp0apache-ant
set PATH=%ANT_HOME%\bin;%PATH%
rem deleting CLASSPATH as a workaround for PLA-8702
set CLASSPATH=echo ant home: %ANT_HOME%
echo ant opts: %ANT_OPTS%
ant -version
2 编译项目
hybris\bin\platform文件夹下,执行如下命令:
ant clean all
注意,建议这里只有在第一次运行hybris,或者说项目结构已损坏的清空下使用,如果是正常的项目文件更新,建议使用:
ant all
其原因是,ant clean all会删除项目文件夹下的所有编译文件,重新开始编译和构建项目,由于项目文件较多,会耗费较多时间,通常需要半小时左右。
如果仅仅使用ant all命令,一般3-7分钟足够。
当然正式的项目运行,建议使用Jrebel热部署,可以免去每次项目修改后ant all的操作,加快开发效率。
3 初始化数据库
在完成代码的编译后,需要对数据库以及其他的系统数据进行初始化。
hybris\bin\platform文件夹下,执行:
ant initialize
也可以在项目启动后,通过hybris administration console | Login
选择Platform>Initialization
点击Initialize
重新生成数据库表结构及数据,通常这个操作是在项目初始化或者建表,修改表结构以后进行。
4 启动项目
hybris\bin\platform文件夹下,执行如下命令:
hybrisserver.bat debug
代表以debug模式运行,可以在后台进行断点调试。
许可证
初次启动项目,会在hybris\config\licence文件夹下生成一个installedSaplicenses.properties文件,不要编辑这个文件,不然会造成项目无法启动。
注意项目初次启动,无需刻意安装许可证,但是启动时只会配置一个30天的临时许可证。当第一次生成的许可证过期后,可按如下方法生成新的许可证。
临时许可证
hybris\bin\platform文件夹下,执行如下命令:
license.bat -temp CPS_SQL
这里使用的是默认数据HSQL, 详细支持数据库及代码如下,可以根据当前数据库选择安装对应的临时许可证:
永久许可证
如果有买许可证或者生成环境下,hybris\bin\platform文件夹下使用命令如下:
./license.sh -install /path/to/fileContainingLicense.txt
查看许可证
hybris\bin\platform文件夹下:
./license.sh -show