Я играю с установкой TeamCity и разрабатываю плагин, расширяющий BuildServerAdapter. Когда я его упаковываю и устанавливаю на сервер, teamcity-server.log содержит записи для моего плагина:
- найден при сканировании папки плагинов (.BuildServer\plugins)
- регистрирующий плагин агента из плагина сервера
- загружается в общий загрузчик классов
- загружен
Плагин также указан на странице плагинов в администрировании сервера.
Помимо этого... ничего. Я ввел в различные записи журнала, как с помощью logger, так и с System.out, и я их не вижу. Я даже добавил исключение в конструктор, и я не вижу никаких доказательств этого ни в системных журналах. Когда происходит сборка, снова нет доказательств, что мой код вызывается.
public class CustomBuildServerAdapter extends BuildServerAdapter {
private SBuildServer myBuildServer;
private static final Logger LOG = Logger.getLogger(CustomBuildServerAdapter.class);
private void debug(String msg) { LOG.debug(msg); System.out.println(msg); }
public CustomBuildServerAdapter(SBuildServer aBuildServer) throws Exception {
throw new Exception("constructor is being called, at least we know that...");
//myBuildServer = aBuildServer;
//debug("constructor");
}
public void register() {
debug("registering");
myBuildServer.addListener(this);
debug("registered");
}
public void buildFinished(SRunningBuild build) {
debug("build finished");
postMessage(build.getFullName() + " - " + build.getStatusDescriptor().getText());
debug("message posted");
}
...
Почтовый индекс, который я копирую в .BuildServer\plugins
, имеет следующую структуру:
- MyTeamCityPlugin.zip
- teamcity.plugin.xml
- Сервер
- MyTeamCityPlugin.jar
- Пакеты пакетов, содержащие файлы классов
- META-INF
- встроенный сервер-plugin.xml
- MANIFEST.MF
Глядя на другие плагины, они используют следующую структуру, поэтому я тоже пробовал это.
- MyTeamCityPlugin.zip
- MyTeamCityPlugin
- teamcity.plugin.xml
- MyTeamCityPlugin.jar
- Пакеты пакетов, содержащие файлы классов
- META-INF
- встроенный сервер-plugin.xml
- MANIFEST.MF
- MyTeamCityPlugin
My build-server-plugin.xml содержит следующее:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="constructor">
<bean id="myplugin" class="com.blah.blah.blah.CustomBuildServerAdapter" init-method="register"/>
</beans>
Я участвую в этом, так как teamcity-server.log указывает, что он знает о плагине и больше не генерирует исключение, пытающееся загрузить его. К сожалению, не заблуждение - это не то же самое.
Используя сценарии сборки ant из плагина примера, я получаю следующую ошибку, поэтому я вручную упаковываю вещи. Это приводит к, казалось бы, успешной нагрузке, указанной выше.
Не удалось инициализировать контекст spring для плагина MyTeamCityPlugin. Ошибка при создании bean с именем "simpleRunnerRunType": не удалось выполнить экземпляр bean.
Может ли кто-нибудь дать мне удар, который мне нужен, чтобы он работал правильно?