Plugins TeamCity加载自定义插件,但没有';没有证据表明插件代码在运行

Plugins TeamCity加载自定义插件,但没有';没有证据表明插件代码在运行,plugins,teamcity,Plugins,Teamcity,我正在使用TeamCity安装并开发扩展BuildServerAdapter的插件。当我将其打包并安装到服务器时,teamcity-server.log包含我的插件条目: 扫描插件(.BuildServer\plugins)文件夹时找到 从服务器插件注册代理插件 在共享类加载器中加载 装载 该插件也列在服务器管理的插件页面上 除此之外……什么都没有。我已经通过logger和System.out输入了各种日志语句,但我没有看到它们。我甚至在构造函数中添加了一个异常,在系统日志中也没有看到这方面

我正在使用TeamCity安装并开发扩展BuildServerAdapter的插件。当我将其打包并安装到服务器时,teamcity-server.log包含我的插件条目:

  • 扫描插件(.BuildServer\plugins)文件夹时找到
  • 从服务器插件注册代理插件
  • 在共享类加载器中加载
  • 装载
该插件也列在服务器管理的插件页面上

除此之外……什么都没有。我已经通过logger和System.out输入了各种日志语句,但我没有看到它们。我甚至在构造函数中添加了一个异常,在系统日志中也没有看到这方面的证据。当构建发生时,再次没有证据表明调用了我的代码

公共类CustomBuildServerAdapter扩展了BuildServerAdapter{
私有SBuildServer-myBuildServer;
私有静态最终记录器LOG=Logger.getLogger(CustomBuildServerAdapter.class);
私有void调试(字符串msg){LOG.debug(msg);System.out.println(msg);}
公共CustomBuildServerAdapter(SBuildServer AbildServer)引发异常{
抛出新异常(“正在调用构造函数,至少我们知道…);
//myBuildServer=aBuildServer;
//调试(“构造函数”);
}
公开作废登记册(){
调试(“注册”);
myBuildServer.addListener(这个);
调试(“注册”);
}
公共void buildFinished(srrunningbuild){
调试(“构建完成”);
postMessage(build.getFullName()+“-”+build.getStatusDescriptor().getText());
调试(“消息发布”);
}
...
我复制到
.BuildServer\plugins
的zip具有以下结构:

  • MyTeamCityPlugin.zip
    • teamcity.plugin.xml
    • 服务器
    • MyTeamCityPlugin.jar
      • 包含类文件的包文件夹
      • META-INF
        • build-server-plugin.xml
        • MANIFEST.MF
看看其他插件,它们使用以下结构,所以我也尝试过

  • MyTeamCityPlugin.zip
    • MyTeamCityPlugin
      • teamcity.plugin.xml
      • MyTeamCityPlugin.jar
        • 包含类文件的包文件夹
        • META-INF
          • build-server-plugin.xml
          • MANIFEST.MF
My build-server-plugin.xml包含以下内容:


我是其中的一部分,因为teamcity-server.log确实表明它知道插件,并且不再在尝试加载插件时抛出异常。不幸的是,不出错也不一样

使用示例插件中的ant构建脚本,我得到了以下错误,因此我一直在手动打包。这导致了上面的加载似乎成功

未能初始化插件MyTeamCityPlugin的spring上下文。创建名为“SimpleRunnErrorType”的bean时出错:bean的实例化失败


有人能给我一点动力让它正常运行吗?

该网站形容它很简单(是的,如果它能工作的话):

1.关闭TeamCity服务器。
2.将带有插件的zip存档复制到/plugins。
3.启动TeamCity服务器:插件文件将自动解包和处理。

还有关于安装TeamCity插件的在线分步指南。

您需要使用以下代码:

Loggers.SERVER.info("Your message");
这将记录到teamcity-server.log。Loggers类还包含其他静态字段,如AUTH、VCS等。每个字段对应于单独的日志文件(例如teamcity-VCS.log、teamcity-AUTH.log等)。为了使用此代码,您还需要在pom.xml中添加以下依赖项(对于Maven):


com.intellij
openapi
7.0.3
假如

这是通过Teamcity 8.1测试的。

如果您的插件列在插件页面(管理->服务器配置),然后加载并初始化您的类。您是如何检查插件是否工作的?通过查看服务器日志?但在这种情况下,您需要使用信息或警告优先级进行日志记录,因为默认情况下禁用调试。如果stdout/err在内部被重定向…可能尝试发送电子邮件,创建一些虚拟文件。尝试使用那些老式的基本debUGG技术。
Loggers.SERVER.info("Your message");
<dependency>
  <groupId>com.intellij</groupId>
  <artifactId>openapi</artifactId>
  <version>7.0.3</version>
  <scope>provided</scope>
</dependency>