本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给
重复发明重新定义博客系统的人做个参考 ❤️
Java 环境
- Java:至少需要 JDK8,如果你没有安装过 JDK,那就安装最新版。对于具体 JDK 实现没有要求,Oracle JDK 或者 OpenJDK 都行
- Maven:至少需要 Maven2,和 JDK 一样,能用最新版就用最新版
- Web 容器:支持 Servlet 3.1 的容器,建议用 Tomcat 9 或者 Jetty 9,能用最新版就用最新版
数据库
- 默认使用 H2 Database,可以切换为 MySQL
- 生产环境建议使用 MySQL,毕竟管理工具、运维工具比较齐全
- MySQL 5.7 和 MySQL 8 都可以,建议用 MySQL 8
获取源码
Solo 使用了 Git 子模块来组织项目,所以在克隆时需要带上递归子模块参数 --recurse-submodules
:
git clone --recurse-submodules git@github.com:b3log/solo.git
使用 Git 子模块主要是因为我们将皮肤放在了仓库 solo-skins 上进行维护,使皮肤可以独立于主程序进行维护。如果你是手动下载的源码包,那就需要皮肤仓库 solo-skins 上下载皮肤,然后放置到 src/main/webapp/skins 目录下:
├─src
│ ├─main
│ │ └─webapp1
│ │ ├─skins
│ │ │ ├─9IPHP
│ │ │ ├─Andrea
│ │ │ ├─Bruce
│ │ │ ├─....
IDE
因为 Solo 是通过 Maven 构建的项目,所以只要支持 Maven 的 IDE 都可以,推荐:
- IntelliJ IDEA
- NetBeans
使用 IDE 打开项目即可,第一次构建时会自动下载依赖。pom 里默认激活的 profile 使用了阿里云的 Maven 仓库,理论上依赖下载会比较快。
项目结构
中规中矩的 MVC 分层:
- processor:控制器层,处理 HTTP 请求
- service:服务层,实现业务逻辑,事务封装
- repository:持久化层,实现数据库存取
- model:数据模型,定义 JSON 键常量方便公用
其他几个包:
- cache:热数据缓存
- api:实现 B3log 构思;实现 MetaWeblog API
- event:一些事件处理器,可对发布文章 / 评论进行扩展
- filter:初始化检查、自定义路径路由
- plugin:内置插件的实现
- util:Markdown、Emoji、皮肤等处理工具
详细的包说明可参考实现规范和约定,其余目录结构可参考 Maven 标准目录结构。
启动运行
在 IDE 中可以直接运行 org.b3log.solo.Starter
类或者使用 pom.xml 里面配置好的 jetty-maven-plugin jetty:run
。
回到全文目录:《Solo 从设计到实现》
欢迎来到黑客派
注册 关于
文档上有写的就不要问了,谢谢。
Solo 用户指南
怎么获取源码啊 有权限问题啊
怎么将 solo 部署到阿里云?😭
社区搜索一下吧,很多教程。