此类每个项目都不同，不应放在公共模块