本文是《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 从设计到实现》

感谢    关注    收藏    赞同    反对    举报    分享