编写gerrit插件时,您可以选择使用自动注册(使用@Listen
和@Export
注释),也可以通过定义<GerritModule>
,<Gerrit-SshModule>
和/或<Gerrit-HttpModule>
中的pom.xml
。
自动注册显示在this幻灯片集中,但有关如何使用手动注册的文档很少。那怎么办?
答案 0 :(得分:1)
让我们说我们想将commit-message-length-validator
插件转换为手动注册。它的精简版看起来像这样:
@Listen
@Singleton
public class CommitMessageLengthValidation implements CommitValidationListener {
public List<CommitValidationMessage> onCommitReceived(CommitReceivedEvent receiveEvent)
throws CommitValidationException {
// do something
}
}
<GerritModule>
或降级构建脚本中的pom.xml
条目必须指向Guice模块,因此我们必须创建一个。
class MyModule extends AbstractModule {
@Override
protected void configure() {
// this does manual registration of CommitMessageLengthValidation
DynamicSet.bind(binder(), CommitValidationListener.class)
.to(CommitMessageLengthValidation.class);
}
}
替换@Export
注释稍微复杂一些。对于SSH命令,通过扩展PluginCommandModule
:
class MySshModule extends PluginCommandModule {
@Override
protected void configureCommands() {
command(PrintHelloWorldCommand.class);
alias("say-hello", PrintHelloWorldCommand.class);
}
}
对于HTTP Servlet,请使用ServletModule
:
public class Git2MksHttpModule extends ServletModule {
@Override
protected void configureServlets() {
serve("/servertime").with(ServerTime.class);
}
}