如何通过 RefService 获取仓库标签
How to get repository tags via RefService
我根本不是 Java 开发人员。但我预计它不应该那么难。我正在尝试为 Bitbucket Server 安装特定插件,它将触发 postReceive 并检查特定标签,然后执行基本操作(通过 REST 发布已提交文件的内容)。下面的简化代码示例不起作用。
public class ReleaseNotesHook implements AsyncPostReceiveRepositoryHook, RepositorySettingsValidator
{
private static final PageRequestImpl PAGE_REQUEST = new PageRequestImpl(0, 100);
private RefService refService;
public ReleaseNotesHook(RefService refService){
this.refService = refService;
}
public void postReceive(RepositoryHookContext context, Collection<RefChange> refChanges)
{
String url = context.getSettings().getString("url");
for (RefChange refCh : refChanges) {
boolean isAdd = (refCh.getType() == RefChangeType.ADD);
boolean isTag = (refCh.getRef().getId().contains("tags"));
if (isAdd && isTag) {
Repository repo = context.getRepository();
RepositoryTagsRequest tagRequest = new RepositoryTagsRequest.Builder(repo).build();
Page<Tag> tags = refService.getTags(tagRequest, PAGE_REQUEST);
performSomething(tags);
}
}
}
} //class
当我启动 atlas-debug 时,它可以很好地构建项目并启动 Bitbucket Server,但无法插入挂钩并出现错误:
[INFO] [talledLocalContainer] org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为 'com.atlassian.bitbucket.plugin.releasenotes.hook.ReleaseNotesHook' 的 bean 时出错:通过具有类型 [com.atlassian.bitbucket.repository.RefService] 的索引 0 的构造函数参数表示的不满足依赖关系::无限定为依赖项找到 [com.atlassian.bitbucket.repository.RefService] 类型的 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{};嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为 [com.atlassian.bitbucket.repository.RefService] 的符合条件的 bean 用于依赖项:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{}
我的这个插件的主要资源是:
- https://developer.atlassian.com/blog/2015/01/beer-o-clock-stash-plugin-tutorial/
- https://developer.atlassian.com/static/javadoc/bitbucket-server/4.6.2/api/reference/com/atlassian/bitbucket/repository
- https://bitbucket.org/atlassian/stash-example-hook-protect-ref/commits/a38e6118b0b1ac1b9b73959e32325271d3d3937a?at=update-example-for-bitbucket-rebrand#chg-src/main/java/com/atlassian/bitbucket/server/repository/hook/ref/RefValidator.java
有 XML 个文件需要编辑。它包含所有依赖项注释。我无法再访问源代码,所以我不记得文件名了,但我记得编辑它对我有帮助并允许使用我需要的所有 *Service 处理程序。
我根本不是 Java 开发人员。但我预计它不应该那么难。我正在尝试为 Bitbucket Server 安装特定插件,它将触发 postReceive 并检查特定标签,然后执行基本操作(通过 REST 发布已提交文件的内容)。下面的简化代码示例不起作用。
public class ReleaseNotesHook implements AsyncPostReceiveRepositoryHook, RepositorySettingsValidator
{
private static final PageRequestImpl PAGE_REQUEST = new PageRequestImpl(0, 100);
private RefService refService;
public ReleaseNotesHook(RefService refService){
this.refService = refService;
}
public void postReceive(RepositoryHookContext context, Collection<RefChange> refChanges)
{
String url = context.getSettings().getString("url");
for (RefChange refCh : refChanges) {
boolean isAdd = (refCh.getType() == RefChangeType.ADD);
boolean isTag = (refCh.getRef().getId().contains("tags"));
if (isAdd && isTag) {
Repository repo = context.getRepository();
RepositoryTagsRequest tagRequest = new RepositoryTagsRequest.Builder(repo).build();
Page<Tag> tags = refService.getTags(tagRequest, PAGE_REQUEST);
performSomething(tags);
}
}
}
} //class
当我启动 atlas-debug 时,它可以很好地构建项目并启动 Bitbucket Server,但无法插入挂钩并出现错误:
[INFO] [talledLocalContainer] org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为 'com.atlassian.bitbucket.plugin.releasenotes.hook.ReleaseNotesHook' 的 bean 时出错:通过具有类型 [com.atlassian.bitbucket.repository.RefService] 的索引 0 的构造函数参数表示的不满足依赖关系::无限定为依赖项找到 [com.atlassian.bitbucket.repository.RefService] 类型的 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{};嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为 [com.atlassian.bitbucket.repository.RefService] 的符合条件的 bean 用于依赖项:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{}
我的这个插件的主要资源是:
- https://developer.atlassian.com/blog/2015/01/beer-o-clock-stash-plugin-tutorial/
- https://developer.atlassian.com/static/javadoc/bitbucket-server/4.6.2/api/reference/com/atlassian/bitbucket/repository
- https://bitbucket.org/atlassian/stash-example-hook-protect-ref/commits/a38e6118b0b1ac1b9b73959e32325271d3d3937a?at=update-example-for-bitbucket-rebrand#chg-src/main/java/com/atlassian/bitbucket/server/repository/hook/ref/RefValidator.java
有 XML 个文件需要编辑。它包含所有依赖项注释。我无法再访问源代码,所以我不记得文件名了,但我记得编辑它对我有帮助并允许使用我需要的所有 *Service 处理程序。