//// 授权给Apache软件基金会(ASF),根据一个或多个贡献者许可协议。 有关版权所有权的更多信息,请参阅随本作品分发的NOTICE文件。 ASF根据Apache许可证2.0版("许可证")向您授予本文件的使用权; 除非符合许可证的规定,否则您不得使用本文件。 您可以在以下网址获取许可证的副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件是基于 "按原样"的基础提供的,不附带任何明示或暗示的担保或条件。 有关许可证下具体的管理权限和限制,请参阅许可证。 ////
:projectKey: org.optaplanner:optaplanner :sonarBadge: image:https://sonarcloud.io/api/project_badges/measure?project={projectKey} :sonarLink: link="https://sonarcloud.io/dashboard?id={projectKey}"
:branch: main
:jenkinsUrl: https://eng-jenkins-csb-business-automation.apps.ocp-c1.prod.psi.redhat.com/job/KIE/job/optaplanner :branchJenkinsUrl: {jenkinsUrl}/job/{branch} :toolsFolderJenkinsUrl: {branchJenkinsUrl}/job/tools :releaseFolderJenkinsUrl: {branchJenkinsUrl}/job/release
image::optaplanner-docs/src/modules/ROOT/images/shared/optaPlannerLogo.png[link="https://www.optaplanner.org/",OptaPlanner,150,150,align="center"]
image:https://img.shields.io/maven-central/v/org.optaplanner/optaplanner-bom?logo=apache-maven&style=for-the-badge["Maven构件", link="https://ossindex.sonatype.org/component/pkg:maven/org.optaplanner/optaplanner-bom"] image:https://img.shields.io/badge/stackoverflow-ask_question-orange.svg?logo=stackoverflow&style=for-the-badge["Stackoverflow", link="https://stackoverflow.com/questions/tagged/optaplanner"] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg?logo=zulip&style=for-the-badge[ "加入Zulip聊天", link="https://kie.zulipchat.com/#narrow/stream/232679-optaplanner"] image:https://img.shields.io/github/commit-activity/m/kiegroup/optaplanner?label=commits&style=for-the-badge["提交活动", link="https://github.com/kiegroup/optaplanner/pulse"] image:https://img.shields.io/github/license/kiegroup/optaplanner?style=for-the-badge&logo=apache["许可证", link="https://www.apache.org/licenses/LICENSE-2.0"] image:https://img.shields.io/badge/JVM-11--17-brightgreen.svg?style=for-the-badge["JVM支持", link="https://github.com/kiegroup/optaplanner/actions/workflows/pull_request.yml"] image:https://img.shields.io/badge/Maven-3.x-blue?style=for-the-badge["Maven",link="https://maven.apache.org/install.html"] image:https://img.shields.io/github/languages/code-size/kiegroup/optaplanner?style=for-the-badge["代码大小", link="https://github.com/kiegroup/optaplanner/actions/workflows/pull_request.yml"]
{sonarBadge}&style=for-the-badge&metric=reliability_rating["可靠性评级", {sonarLink}] {sonarBadge}&metric=security_rating["安全评级", {sonarLink}] {sonarBadge}&metric=sqale_rating["可维护性评级", {sonarLink}] {sonarBadge}&metric=coverage["覆盖率", {sonarLink}]
一个快速、易用、开源的人工智能约束求解器,专为软件开发人员设计
== 寻找快速入门指南?
OptaPlanner的快速入门指南位于 https://github.com/kiegroup/optaplanner-quickstarts[optaplanner-quickstarts 仓库]。
== 快速开发启动
从源代码构建并运行:
$ mvn clean install -Dquickly $ cd optaplanner-examples $ mvn exec:java
要使用IntelliJ IDEA、Eclipse或VSCode进行开发,请将根目录下的pom.xml
作为新项目打开,
并配置一个_运行/调试配置_,如下所示:
- 类型:应用程序
- 主类:
org.optaplanner.examples.app.OptaPlannerExamplesApp
- VM选项:
-Xmx2G -server
(仅在使用示例中的大型数据集时需要内存) - 程序参数:(无)
- 工作目录:
$MODULE_DIR$
(必须解析为optaplanner-examples目录) - 使用模块的类路径:
optaplanner-examples
== 为OptaPlanner做出贡献
这是一个开源项目,我们非常欢迎您的贡献 :heart:!
-
如果你刚开始接触OptaPlanner并想做出贡献,可以看看我们的入门级问题。这些问题专门为首次贡献者挑选,相对容易上手。
-
如果你想贡献或发起有见地的讨论,可以加入我们的讨论组或直接发送邮件至optaplanner-dev@googlegroups.com。
-
如果你想提交问题,请查看OptaPlanner Jira项目。
=== 准备做出改变?
所有变更都必须通过GitHub拉取请求(PR)提交。OptaPlanner使用持续集成(CI)。在你提交PR后,OptaPlanner CI会对你的分支进行检查,以确保你的PR不会引入错误。如果CI发现潜在问题,我们友好的PR维护者会帮助你解决。
=== 贡献步骤
- 复刻仓库 (https://github.com/kiegroup/optaplanner)。
- 创建你的功能分支:(
git checkout -b feature
)。 - 提交你的更改并附上注释:(
git commit -am '添加某项功能'
)。 - 将分支推送到GitHub:(
git push origin feature
)。 - 创建一个新的拉取请求。
=== 代码标准
你的代码会在每次Maven构建期间自动按照"导入和代码样式"约定进行格式化。CI检查也会强制执行这些约定,所以在创建PR之前,请确保使用maven构建你的项目:
mvn clean install
有关如何设置代码样式检查的信息,请参阅IDE设置说明。
=== 构建你的OptaPlanner项目
使用以下方式之一构建你的OptaPlanner项目:
-
:rocket: 快速构建:
mvn clean install -Dquickly
跳过任何检查和代码分析(约1分钟) -
:hammer: 常规构建:
mvn clean install
运行测试,检查代码样式,跳过文档(约17分钟) -
:receipt: 构建文档:在
optaplanner/optaplanner-docs
目录下运行mvn clean install
创建asciidoctor文档target/optaplanner-docs-*/html_single/index.html
(约2分钟) -
:mechanical_arm: 全面构建:
mvn clean install -Dfull
运行所有检查 + 创建文档和分发文件(约20分钟)
== OptaPlanner CI状态
你可以从链状态网页查看OptaPlanner仓库的CI状态。
=== Jenkins CI作业(需要VPN访问)===
所有Jenkins作业可在OptaPlanner文件夹下找到:{jenkinsUrl}
有趣的Jenkins CI作业(需要VPN访问):
- 更新Quarkus版本
- 更新Drools版本
- 发布流程(仅在发布分支上可用)
- 发布后流程(仅在发布分支上可用)