spi-maven-plugin
Introduction
SPI(service provider interface)。类似dubbo等分布式服务框架,服务接口面向企业内部不同研发小组需要限制访问权限,通常将其拆分分散管理,也可在服务提供方使用IP白名单,但最简单有效的办法是在调用方过滤掉无权限的接口和方法。
spi-maven-plugin插件在构建jar阶段过滤指定的接口和方法,默认过滤"**/internal/**"包路径的接口和javadoc中包含@hide标签的接口和方法,此特点与Android API十分相似。
Usage
spi-maven-plugin插件扩展自maven-jar-plugin,插件配置完全相同,前者增加扫描【<includes> - <excludes>】包路径下所有class文件并过滤javadoc中包含@hide标签的接口和方法。
Examples
SPI接口类:
public interface DemoService {
/**
*
* public spi.
*
* @param sql
* @return
*/
public List<Object> find(String sql);
/**
*
* private spi.
*
* @hide
* @param object
* @return
*/
public boolean save(Object object);
/**
*
* private spi.
*
* @hide
* @param id
* @return
*/
public boolean deleteById(long id);
/**
*
* private spi.
*
* @hide
* @param object
* @return
*/
public boolean update(Object object);
}
maven工程插件配置:
<plugin>
<groupId>org.oakio</groupId>
<artifactId>spi-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>generate-spi</id>
<phase>package</phase>
<goals>
<goal>spi</goal>
</goals>
</execution>
</executions>
</plugin>
运行mvn package,查看构建输出目录:
使用jd-gui反编译class:
Changelist
v1.1 使用qdox替换jdk自带的javadoc解析工具。