Skip to content

Latest commit

 

History

History
 
 

plugins

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

pybbs插件

朋也开发的插件都在这个plugins目录里,这里放的都是源码,如果想用的话,可以自己通过mvn打包然后使用,用法如下

当前目录中的插件

  • comment-layer-plugin: 对话题评论进行盖楼排序

  • redis-cache-plugin: 对部分查询提供redis缓存

  • theme-simple-plugin: simple主题

原理

Tip

首先你要知道spring的切面编程思想,其次要会用aop

在插件里也可以使用pybbs里已经开发好的service以及mapper

插件的实现原理是使用spring的aop切面编程思想实现的,pybbs里提供了service包下几乎所有service方法的切入点

开发插件就是围绕着这些切入点来实现的功能,这样做可以做到对系统实现0侵入

具体用法可能参见当前目录下的插件写法

打包

项目是纯maven项目,所以打包也是用的mvn命令打的

mvn clean package
Tip

注意不要将pybbs给打到jar包里了,在引入信赖的时候 scope 请配置成 provided

使用

目前还在测试阶段,文档没有更新,这里简单介绍一下用法

  1. 将pybbs主项目打包,命令 mvn clean package

  2. 将打包好的pybbs.jar拷贝到你想放的目录下,比如 /opt/pybbs/

  3. 在`/opt/pybbs/目录下创建一个文件夹 `plugins

  4. 将插件打包好后的jar包拷贝到 plugins 目录中

  5. 启动项目使用命令 java -Dloader.path=./plugins -jar pybbs.jar

运行浏览器,打开 http://localhost:8080/ 即可

开发插件

规范

  1. 插件名要以 -plugin 结尾,如 xxx-plugin,例如 redis-cache-plugin

  2. 如果是主题插件,要以 theme 开头,以 -plugin 结尾,例如 theme-simple-plugin

  3. 插件包名必须为 co.yiiu.pybbs.plugin (主题插件除外)

  4. 插件打包必须要使用jdk8编译

  5. 附上插件说明,越详细越好

首先下载pybbs项目,将`pom.xml`里的下面代码注释掉

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <layout>ZIP</layout>
    </configuration>
</plugin>

然后运行命令 mvn clean install 将pybbs安装到本地maven库,这样在插件里就可以通过下面信赖引入了

<dependency>
    <groupId>co.yiiu</groupId>
    <artifactId>pybbs</artifactId>
    <version>5.2.1</version>
    <scope>provided</scope>
</dependency>

然后就可以开发了

开发主题

主题也可以当成插件被加载,当前目录下的 theme-simple-plugin 就是一个主题插件,通过 mvn clean package 将其打成jar包,按照上面使用方法中启动项目也是可以加载的

开发很简单

  1. 创建maven项目

  2. src/main/resources/templates/theme/xxx 下开发主题文件,其中 xxx 就是主题的名字(文件夹不存在,自行创建)

  3. 静态资源文件放在 src/main/resources/static/theme/xxx 其中 xxx 就是主题的名字(文件夹不存在,自行创建)

开发好之后,打包即可

测试

测试插件功能

首先将插件项目通过 mvn clean install 安装到本地

然后在pybbs项目里的pom.xml里引入插件

最后启动pybbs,即可测试插件功能了

注意

Tip

插件功能目前还处在测试阶段,请不要更新master分支的代码去部署线上服务