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

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

  • 扫描插件(.BuildServer \ plugins)文件夹时发现
  • 从服务器插件注册代理插件
  • 加载到共享类加载器中
  • 被加载

该插件也列在服务器pipe理的插件页面上。

除此之外,什么也不是。 我已经通过logging器和System.outinput了各种日志语句,但是我没有看到它们。 我甚至在构造函数中添加了一个exception,而且我在系统日志中也看不到任何证据。 当构build发生时,再也没有证据表明我的代码被调用了。

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的zip具有以下结构:

  • 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

我的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确实表明它知道插件,不再抛出一个exception,试图加载它。 不幸的是,没有犯错是不一样的工作。

使用示例插件的ant构build脚本,我得到以下错误,所以我一直在手动打包。 这导致了每个表面看起来成功的负载。

无法为插件MyTeamCityPlugin初始化Spring上下文。 创build名为“simpleRunnerRunType”的bean时出错:bean的实例化失败。

任何人都可以给我踢我需要得到这个正确运行?

该网站形容它很容易(是的,如果它的工作):

  1. Shut down TeamCity server. 2. Copy the zip archive with the plugin to <TeamCity Data Directory>/plugins. 3. Start the TeamCity server: the plugin files will be unpacked and processed automatically. 

这里还有在线安装TeamCity插件的分步指南。

您需要使用以下代码:

 Loggers.SERVER.info("Your message"); 

这将logging到teamcity-server.log。 logging器类还包含其他静态字段,如AUTH,VCS等。 每个对应于单独的日志文件(例如teamcity-vcs.log,teamcity-auth.log等)。 为了使用这个代码,你还需要在你的pom.xml中添加下面的依赖项(对于Maven):

 <dependency> <groupId>com.intellij</groupId> <artifactId>openapi</artifactId> <version>7.0.3</version> <scope>provided</scope> </dependency> 

这是用Teamcity 8.1testing的。