欢迎使用Apache OFBiz®!一个功能强大的顶级 Apache 软件项目。OFBiz 是一个用 Java 编写的企业资源规划 (ERP) 系统,包含大量库、实体、服务和功能,可用于运行您业务的各个方面。
有关 OFBiz 的更多详细信息,请访问 OFBiz 文档页面:
运行 OFBiz 的唯一要求是在您的系统上安装 Java 开发工具包 (JDK) 版本 8(不仅仅是 JRE,而是完整的 JDK),您可以从下面的链接下载。
注意:如果您使用的是 Eclipse,请确保
gradlew eclipse
在 Eclipse 中创建项目之前运行适当的 Eclipse 命令。此命令将通过创建 .classpath 和 .project 文件,为 Eclipse 准备具有正确类路径和设置的 OFBiz。
注意:如果您想使用外部 DBMS,而不是嵌入式 Derby,您将需要一个 JDBC 驱动程序。您唯一需要做的就是在 build.gradle 中向 MySQL/PostgreSQL/whatever JDBC 驱动程序添加依赖项。在 Jcenter 中搜索适合您生产系统上安装的数据库的数据库驱动程序。例如,在依赖项部分下,您可以为 mysql 添加类似以下内容:
runtime 'mysql:mysql-connector-java:5.1.36'
当然,您需要确保连接器与您安装的数据库版本兼容!
为了快速安装和启动 OFBiz,请在 OFBiz 顶级目录(文件夹)的命令行中按照以下说明进行操作
注意:如果您是第一次使用 OFBiz,则此步骤可能需要很长时间才能完成,因为它需要下载所有依赖项,具体取决于您的 Internet 连接速度。所以请耐心等待!
微软 Windows:
gradlew cleanAll loadDefault
类Unix操作系统:
./gradlew cleanAll loadDefault
微软 Windows:
gradlew ofbiz
类Unix操作系统:
./gradlew ofbiz
注意:忽略%进度指示器,因为只要 OFBiz 正在运行,此任务就不会结束。
您可以使用用户admin和密码ofbiz登录。
注意:默认配置使用嵌入式 Java 数据库(Apache Derby)和嵌入式应用程序服务器组件,例如 Apache Tomcat®、Apache Geronimo(事务管理器)等。
您可以相信 OFBiz 项目管理委员会成员和提交者会尽最大努力确保 OFBiz 免受外部攻击,并在发现漏洞后立即修复。尽管做出了这些努力,但如果您发现并想要报告安全问题,请在公开论坛上披露之前向 security @ ofbiz.apache.org 报告。
注意:如果你计划使用 RMI、JNDI、JMX 或 Spring,或者其他 Java 类 OFBiz 不使用开箱即用 (OOTB),请务必阅读此 Wiki 页面:臭名昭著的 Java 序列化漏洞
你可以在保持 OFBiz 安全中找到更多关于 OFBiz 安全性的信息
所有构建任务均使用 OFBiz 中嵌入的Gradle构建系统执行。要执行构建任务,请转到 OFBiz 顶级目录(文件夹)并从那里执行任务。
Windows 和类 Unix 系统之间的任务语法略有不同
-
窗户:
gradlew <tasks-in-here>
-
类Unix:
./gradlew <tasks-in-here>
对于本文档的其余部分,我们将使用 Windows 语法,如果您使用的是类 Unix 系统,则需要./
将
Gradle 中为 OFBiz 设计了两种类型的任务:
-
标准任务:执行一般标准 Gradle 任务
-
OFBiz 服务器任务:执行 OFBiz 启动命令。这些任务以下列单词之一开头:
- ofbiz:标准服务器命令
- ofbizDebug:在远程调试模式下运行的服务器命令
- ofbizBackground;在后台分叉进程中运行的服务器命令
尖端:
-
OFBiz服务器命令需要“引用”命令。例如:
gradlew "ofbiz --help"
-
可以通过写出任务名称中每个单词的首字母来使用任务名称的快捷方式。但是,您不能使用 OFBiz 服务器任务的快捷方式。例如:
gradlew loadAdminUserLogin -PuserLoginId=myadmin
=gradlew lAUL -PuserLoginId=myadmin
gradlew build
gradlew cleanAll loadDefault testIntegration
gradlew "ofbiz --help"
gradlew "ofbizDebug --test"
gradlew "ofbizBackground --start --portoffset 10000"
gradlew "ofbiz --shutdown --portoffset 10000"
gradlew ofbiz
(默认为--start)
gradlew cleanAll loadDefault "ofbiz --start"
您可以使用以下常见任务列表作为控制系统的快速参考。本文档使用 Windows 任务语法,如果您使用的是类 Unix 系统,则需要将其添加
./
到 gradlew 即./gradlew
列出所有可用来控制 OFBiz 服务器的命令
gradlew "ofbiz --help"
列出构建系统的所有可用任务
gradlew tasks
列出构建系统中所有可用的项目
gradlew projects
显示 Gradle 构建系统的用法和选项
gradlew --help
gradlew "ofbiz --start"
start 是默认的服务器任务,因此这也有效:
gradlew ofbiz
gradlew "ofbiz --shutdown"
gradlew "ofbiz --status"
通过调用适当的操作系统 kill 命令终止所有正在运行的 OFBiz 服务器实例。如果 --shutdown 命令不起作用,请使用此命令强制终止 OFBiz。通常在 OFBiz 中加载数据或测试期间需要这样做。
警告:使用此命令时要小心,因为强制终止可能会导致状态/数据不一致
gradlew terminateOfbiz
以远程调试模式启动 OFBiz,并等待调试器或 IDE 连接到端口5005
gradlew "ofbizDebug --start"
或者
gradlew ofbizDebug
启动网络端口的 OFBiz,偏移量由 --portoffset 参数提供的范围决定
gradlew "ofbiz --start --portoffset 10000"
通过将其分叉到新进程并将输出重定向到runtime/logs/console.log在后台启动OFBiz
gradlew "ofbizBackground --start"
或者
gradlew ofbizBackground
您还可以偏移端口,例如:
gradlew "ofbizBackground --start --portoffset 10000"
OFBiz包含以下数据读取器类型:
- 种子:OFBiz 和外部种子数据 - 与源一起维护,并在系统部署更新时更新
- seed-initial:OFBiz 和外部种子数据 - 与其他种子数据一样与源一起维护,但仅在最初加载,并且在系统更新时不会更新,除非手动检查每一行
- demo:OFBiz 仅演示数据
- ext:外部通用数据(自定义)
- ext-test:外部测试数据(自定义)
- ext-demo:外部演示数据(自定义)
您可以选择使用以下语法传递哪些数据读取器:
gradlew "ofbiz --load-data readers=<readers-here-comma-separated>"
例子:
gradlew "ofbiz --load-data readers=seed,seed-initial,ext,ext-demo"
加载默认数据集;用于初始加载通用 OFBiz 数据。可用于开发、测试、演示等目的。请注意,执行此任务可能会导致您选择的数据库中的数据被覆盖。在生产环境中请谨慎使用。默认数据集由数据源使用 read-data 属性定义,后跟数据集的名称,放入“entityengine.xml”文件的数据源元素中。
gradlew loadDefault
或者
gradlew "ofbiz --load-data"
仅加载种子数据(不是 seed-initial、demo、ext* 或其他任何数据);用于在代码更新后重新加载种子数据,因为它通常与代码一起维护,并且需要同步运行
gradlew "ofbiz --load-data readers=seed"
加载种子、种子初始和扩展数据;用于手动/通用测试、开发或使用基于库存 OFBiz 的派生系统投入生产,其中扩展数据基本上取代了演示数据
gradlew "ofbiz --load-data readers=seed,seed-initial,ext"
加载种子、种子初始、扩展和扩展测试数据;用于使用基于股票 OFBiz 的派生系统进行自动测试
gradlew "ofbiz --load-data readers=seed,seed-initial,ext,ext-test"
从保存实体数据的 XML 文件加载数据。
gradlew "ofbiz --load-data file=foo/bar/FileNameHere.xml"
在您的环境中创建一个新租户,创建委托人,使用管理员用户和密码加载初始数据(需要在 general.properties 中设置 multitenant=Y)。传递以下项目参数:
- 租户ID:必填
- tenantName:可选,默认为tenantId的值
- domainName:可选,默认为 org.apache.ofbiz
- tenantReaders:可选,默认值为seed、seed-initial、demo
- dbPlatform:可选,D(Derby)、M(MySQL)、O(Oracle)、P(PostgreSQL)(默认 D)
- dbIp:可选,数据库的ip地址
- dbUser:可选,数据库的用户名
- dbPassword:可选,数据库的密码
gradlew createTenant -PtenantId=mytenant
gradlew createTenant -PtenantId=mytenant -PtenantName="My Name" -PdomainName=com.example -PtenantReaders=seed,seed-initial,ext -PdbPlatform=M -PdbIp=127.0.0.1 -PdbUser=mydbuser -PdbPassword=mydbpass
如果运行成功,系统将创建一个具有以下特征的新租户:
- 委托人:default#${tenandId} (例如 default#mytenant)
- 管理员用户:${tenantId}-admin (例如 mytenant-admin)
- 管理员用户密码:ofbiz
在多租户环境中加载特定租户的数据。请注意,您必须在 general.properties 中设置 multitenant=Y,并传递以下项目参数:
- 租户ID(必填)
- tenantReaders(可选)
- tenantComponent(可选)
gradlew loadTenant -PtenantId=mytenant
gradlew loadTenant -PtenantId=mytenant -PtenantReaders=seed,seed-initial,demo -PtenantComponent=base
gradlew test
gradlew testIntegration
或者
gradlew 'ofbiz --test'
运行测试用例,在这个例子中,组件是“entity”,用例名称是“entity-tests”
gradlew "ofbiz --test component=entity --test case=entity-tests"
监听端口5005
gradlew "ofbizDebug --test component=entity --test case=entity-tests"
gradlew "ofbiz --test component=widget --test suitename=org.apache.ofbiz.widget.test.WidgetMacroLibraryTests"
监听端口5005
gradlew "ofbizDebug --test component=widget --test suitename=org.apache.ofbiz.widget.test.WidgetMacroLibraryTests"
这是 Gradle 的一个非常方便的功能,它允许用户通过 swing GUI 与 Gradle 交互。您可以将常用命令保存在收藏夹列表中,以便经常重复使用。
gradlew --gui
gradlew cleanAll loadDefault testIntegration
gradlew cleanAll
gradlew clean build
创建一个管理员用户,登录名为 MyUserName,默认密码为“ofbiz”。首次登录时,OFBiz 将要求更改默认密码
gradlew loadAdminUserLogin -PuserLoginId=MyUserName
Xlint 打印编译器检测到的所有警告的输出
gradlew -PXlint build
以下命令激活 gradle 插件 (OWASP) 并识别和报告 OFBiz 库依赖项中的已知漏洞 (CVE)。此命令需要很长时间才能执行,因为它需要下载所有插件依赖项,并且 CVE 识别过程也很耗时
gradlew -PenableOwasp dependencyCheck
在 eclipse 上设置 OFBiz 非常简单,只需运行以下命令,然后将项目导入 eclipse 即可。此命令将为 eclipse 生成必要的.classpath和.project文件,还将使外部库的源代码在 eclipse 中可用(即您可以通过 Ctrl + 单击查看源代码)
第一次运行此命令时,它将需要很长时间才能执行,因为它将下载项目依赖项可用的源包。
gradlew eclipse
OFBiz 通过插件提供扩展机制。插件是位于插件目录中的标准 OFBiz 组件。可以手动添加插件或从 maven 存储库获取插件。管理插件的标准任务如下所列。
注意:OFBiz 插件版本遵循语义版本 2.0.0
下载一个插件及其所有依赖项(插件),然后从依赖项开始到插件本身结束逐个安装它们。
gradlew pullPlugin -PdependencyId="org.apache.ofbiz.plugin:myplugin:0.1.0"
如果插件位于自定义 maven 存储库(不是 jcenter 或 localhost)中,那么您可以使用以下命令指定存储库:
gradlew pullPlugin -PrepoUrl="http://www.example.com/custom-maven" -PdependencyId="org.apache.ofbiz.plugin:myplugin:0.1.0"
如果您需要用户名和密码来访问自定义存储库:
gradlew pullPlugin -PrepoUrl="http://www.example.com/custom-maven" -PrepoUser=myuser -PrepoPassword=mypassword -PdependencyId="org.apache.ofbiz.plugin:myplugin:0.1.0"
从源代码控制(当前为 subversion)下载插件并将其放在插件目录中。这在处理主干分支时非常有用,因为它需要最新版本的插件
gradlew pullPluginSource -PpluginId=ecommerce
如果您有一个名为 mycustomplugin 的插件并想要在 OFBiz 中安装它,请按照以下说明操作:
- 如果插件已压缩,请将其解压缩
- 将解压的目录放入 /plugins
- 运行以下命令
gradlew installPlugin -PpluginId=myplugin
如果插件的 build.gradle 文件中存在,上述命令将执行该任务“install”。
如果您有一个名为 mycustomplugin 的现有插件并且希望卸载,请运行以下命令
gradlew uninstallPlugin -PpluginId=myplugin
如果插件的 build.gradle 文件中存在,则上述命令将执行该任务“卸载”
调用现有插件的uninstallPlugin,然后将其从文件系统中删除
gradlew removePlugin -PpluginId=myplugin
创建一个新的插件。传递以下项目参数:
- pluginId:必填
- pluginResourceName:可选,默认为pluginId的大写值
- webappName:可选,默认为pluginId的值
- basePermission:可选,默认为pluginId的大写值
gradlew createPlugin -PpluginId=myplugin
gradlew createPlugin -PpluginId=myplugin -PpluginResourceName=MyPlugin -PwebappName=mypluginweb -PbasePermission=MYSECURITY
上述命令在 /plugins/myplugin 中创建一个新插件
此任务将 OFBiz 插件发布到 maven 包中,然后将其上传到 maven 存储库。目前,推送仅限于本地 maven 存储库(正在进行中)。要推送插件,请传递以下参数:
- pluginId:必填
- groupId:可选,默认为 org.apache.ofbiz.plugin
- pluginVersion:可选,默认为 0.1.0-SNAPSHOT
- pluginDescription:可选,默认为“OFBiz 插件发布 ${pluginId}”
gradlew pushPlugin -PpluginId=myplugin
gradlew pushPlugin -PpluginId=mycompany -PpluginGroup=com.mycompany.ofbiz.plugin -PpluginVersion=1.2.3 -PpluginDescription="Introduce special functionality X"
要获得 Tab 补全(按 Tab 键自动完成 gradle 命令),您可以从下面的链接下载脚本并将其放在适合您系统的适当位置。
例如,在基于 debian 的系统上,您可以使用以下命令:
sudo curl -L -s https://gist.github.com/Ea87/46401a96df31cd208a87/raw/gradle-tab-completion.bash -o /etc/bash_completion.d/gradle-tab-completion.bash
此发行版包含加密软件。您目前居住的国家/地区可能对加密软件的进口、拥有、使用和/或再出口到其他国家/地区有所限制。在使用任何加密软件之前,请检查您所在国家/地区有关进口、拥有、使用和再出口加密软件的法律、法规和政策,看看是否允许这样做。有关更多信息,请访问http://www.wassenaar.org/ 。
美国政府商务部工业和安全局 (BIS) 已将此软件归类为出口商品控制编号 (ECCN) 5D002.C.1,其中包括使用或执行非对称算法加密功能的信息安全软件。此 Apache 软件基金会发行版的形式和方式使其符合许可例外 ENC 技术软件不受限制 (TSU) 例外(参见 BIS 出口管理条例第 740.13 节)的出口要求,适用于目标代码和源代码。
下面提供了有关所包含的加密软件的更多详细信息:
- OFBiz 中的各个类(包括 DesCrypt、HashCrypt 和 BlowFishCrypt)使用 Sun Java JDK API 中的库,包括 java.security.* 和 javax.crypto.*(JCE,Java 加密扩展 API)
- 其他类(如 HttpClient 和各种相关类)使用 JSSE(Java 安全套接字扩展)API