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
- MyTeamCityPlugin
我的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的。