Skip to content

Apache OFBiz - Main development has moved to the ofbiz-frameworks repository.

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/java-erp

 
 

Repository files navigation

Apache OFBiz®

欢迎使用Apache OFBiz®!一个功能强大的顶级 Apache 软件项目。OFBiz 是一个用 Java 编写的企业资源规划 (ERP) 系统,包含大量库、实体、服务和功能,可用于运行您业务的各个方面。

有关 OFBiz 的更多详细信息,请访问 OFBiz 文档页面:

OFBiz 文档

OFBiz 许可证

系统要求

运行 OFBiz 的唯一要求是在您的系统上安装 Java 开发工具包 (JDK) 版本 8(不仅仅是 JRE,而是完整的 JDK),您可以从下面的链接下载。

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:

注意:如果您是第一次使用 OFBiz,则此步骤可能需要很长时间才能完成,因为它需要下载所有依赖项,具体取决于您的 Internet 连接速度。所以请耐心等待!

微软 Windows: gradlew cleanAll loadDefault

类Unix操作系统: ./gradlew cleanAll loadDefault

启动 OFBiz:

微软 Windows: gradlew ofbiz

类Unix操作系统: ./gradlew ofbiz

注意:忽略%进度指示器,因为只要 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 中的任务类型

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

OFBiz 服务器任务示例

gradlew "ofbiz --help"

gradlew "ofbizDebug --test"

gradlew "ofbizBackground --start --portoffset 10000"

gradlew "ofbiz --shutdown --portoffset 10000"

gradlew ofbiz(默认为--start)

混合任务示例(标准和 OFBiz 服务器)

gradlew cleanAll loadDefault "ofbiz --start"


快速参考

您可以使用以下常见任务列表作为控制系统的快速参考。本文档使用 Windows 任务语法,如果您使用的是类 Unix 系统,则需要将其添加 ./到 gradlew 即./gradlew


帮助任务

列出 OFBiz 服务器命令

列出所有可用来控制 OFBiz 服务器的命令

gradlew "ofbiz --help"

列出构建任务

列出构建系统的所有可用任务

gradlew tasks

列出构建项目

列出构建系统中所有可用的项目

gradlew projects

Gradle 构建系统帮助

显示 Gradle 构建系统的用法和选项

gradlew --help


服务器命令任务

启动 OFBiz

gradlew "ofbiz --start"

start 是默认的服务器任务,因此这也有效:

gradlew ofbiz

关闭 OFBiz

gradlew "ofbiz --shutdown"

获取 OFBiz 状态

gradlew "ofbiz --status"

强制关闭 OFBiz

通过调用适当的操作系统 kill 命令终止所有正在运行的 OFBiz 服务器实例。如果 --shutdown 命令不起作用,请使用此命令强制终止 OFBiz。通常在 OFBiz 中加载数据或测试期间需要这样做。

警告:使用此命令时要小心,因为强制终止可能会导致状态/数据不一致

gradlew terminateOfbiz

以远程调试模式启动 OFBiz

以远程调试模式启动 OFBiz,并等待调试器或 IDE 连接到端口5005

gradlew "ofbizDebug --start"

或者

gradlew ofbizDebug

在不同的端口上启动 OFBiz

启动网络端口的 OFBiz,偏移量由 --portoffset 参数提供的范围决定

gradlew "ofbiz --start --portoffset 10000"

在后台启动 OFBiz

通过将其分叉到新进程并将输出重定向到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 数据

加载默认数据集;用于初始加载通用 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 的图形用户界面

这是 Gradle 的一个非常方便的功能,它允许用户通过 swing GUI 与 Gradle 交互。您可以将常用命令保存在收藏夹列表中,以便经常重复使用。

gradlew --gui

在干净的系统上运行所有测试

gradlew cleanAll loadDefault testIntegration

清除所有生成的工件

gradlew cleanAll

刷新生成的工件

gradlew clean build

创建管理员用户帐户

创建一个管理员用户,登录名为 MyUserName,默认密码为“ofbiz”。首次登录时,OFBiz 将要求更改默认密码

gradlew loadAdminUserLogin -PuserLoginId=MyUserName

使用 Xlint 输出编译 Java

Xlint 打印编译器检测到的所有警告的输出

gradlew -PXlint build

运行 OWASP 工具来识别依赖漏洞(CVE)

以下命令激活 gradle 插件 (OWASP) 并识别和报告 OFBiz 库依赖项中的已知漏洞 (CVE)。此命令需要很长时间才能执行,因为它需要下载所有插件依赖项,并且 CVE 识别过程也很耗时

gradlew -PenableOwasp dependencyCheck

为 OFBiz 设置 eclipse 项目

在 eclipse 上设置 OFBiz 非常简单,只需运行以下命令,然后将项目导入 eclipse 即可。此命令将为 eclipse 生成必要的.classpath.project文件,还将使外部库的源代码在 eclipse 中可用(即您可以通过 Ctrl + 单击查看源代码)

第一次运行此命令时,它将需要很长时间才能执行,因为它将下载项目依赖项可用的源包。

gradlew eclipse


OFBiz插件系统

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"


实用技巧

类 Unix 系统上的 Gradle tab 补全:

要获得 Tab 补全(按 Tab 键自动完成 gradle 命令),您可以从下面的链接下载脚本并将其放在适合您系统的适当位置。

Gradle Tab 补全

例如,在基于 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

About

Apache OFBiz - Main development has moved to the ofbiz-frameworks repository.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 46.1%
  • HTML 26.6%
  • FreeMarker 10.8%
  • JavaScript 8.5%
  • Groovy 4.0%
  • CSS 3.3%
  • Other 0.7%