在编写 gerrit 插件时,您可以选择使用自动注册(使用@Listen
和@Export
注释)或通过定义<GerritModule>
和<Gerrit-SshModule>
/或<Gerrit-HttpModule>
在pom.xml
.
此幻灯片集中显示了自动注册,但有关如何使用手动注册的文档很少。那么它是如何完成的呢?
假设我们要将commit-message-length-validator
插件转换为手动注册。它的精简版本如下所示:
@Listen
@Singleton
public class CommitMessageLengthValidation implements CommitValidationListener {
public List<CommitValidationMessage> onCommitReceived(CommitReceivedEvent receiveEvent)
throws CommitValidationException {
// do something
}
}
or buck build 脚本中的<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 命令,通过扩展创建 Guice 模块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);
}
}