Bitbucket插件开发咨询:如何为仓库列表页添加自定义列
给Bitbucket仓库列表添加自定义列的解决方案
嘿Adam,刚好我之前折腾过Bitbucket仓库列表的自定义列开发,给你梳理下具体思路:
首先明确:仓库列表页完全可以添加自定义列,但它的扩展点和你之前用的分支列表不一样,你找不到对应的web sections节点是因为它用的是专门的列扩展点,不是页面通用sections。
具体步骤:
找到正确的扩展点
Bitbucket项目下的仓库列表,对应的扩展点是repository-list-columns。你需要在插件的atlassian-plugin.xml里注册这个扩展点的web-item。比如添加仓库描述列的示例配置:
<web-item key="repo-description-column" name="Repository Description Column" section="repository-list-columns" weight="100"> <label key="repo.column.description.label"/> <tooltip key="repo.column.description.tooltip"/> <link linkId="repo-description-column-link"> <param name="template">/templates/repo-description-column.vm</param> </link> </web-item>编写渲染列内容的Velocity模板
上面配置里的repo-description-column.vm用来控制列的显示内容,比如:#if ($repository.description) $repository.description #else <em>No description provided</em> #end如果要显示分支数量这类动态数据
需要通过Java组件获取数据并传递给模板:- 先实现
ContextProvider接口,注入Bitbucket的服务来获取分支数量:public class BranchCountColumnProvider implements ContextProvider { private final BranchService branchService; @Inject public BranchCountColumnProvider(BranchService branchService) { this.branchService = branchService; } @Override public Map<String, Object> getContextMap(Map<String, Object> context) { Repository repository = (Repository) context.get("repository"); long branchCount = branchService.countBranches(repository, null); Map<String, Object> result = new HashMap<>(); result.put("branchCount", branchCount); return result; } } - 在
atlassian-plugin.xml里注册这个上下文提供者,并关联到web-item:<context-provider key="branch-count-provider" class="com.your.plugin.BranchCountColumnProvider"/> <web-item key="branch-count-column" name="Branch Count Column" section="repository-list-columns" weight="200"> <label key="repo.column.branchcount.label"/> <tooltip key="repo.column.branchcount.tooltip"/> <link linkId="branch-count-column-link"> <param name="template">/templates/branch-count-column.vm</param> <param name="context-provider">branch-count-provider</param> </link> </web-item> - 对应的Velocity模板
branch-count-column.vm就可以直接使用传递过来的数据:$branchCount
- 先实现
额外提醒:
- 调整
weight参数可以控制列的显示顺序,数值越小,列越靠左 - 确保插件拥有足够的权限访问仓库和分支数据,比如给Java类添加
@RequiresPermissions(RepositoryPermission.REPOSITORY_READ)注解 - 测试时记得重启Bitbucket实例,或者使用插件自动重载功能提升效率
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

