Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0


There is a convention how bean definition file should be named:

  • build-server-plugin-<plugin name>*.xml — for server side plugins
  • build-agent-plugin-<plugin name>*.xml — for agent side plugins

where an asterisk can be replaced with any text, for example: build-server-plugin-cvs.xml. Bean definition files should be placed into the META-INF folder of the JAR archive containing plugin classes.


TeamCity is able to load plugin from the following directories:

Plugins with the same name (for example, newer version) put into <TeamCity data directory>/plugins will override plugins put into <TeamCity web application>/WEB-INF/plugins directory.


If you use a separate folder:

  • TeamCity will use the folder name as plugin name

If you use a zip file:

  • TeamCity will use name of the zip file as the plugin name
  • Plugin zip file will be automatically unpacked on server startup to directory with the same name

Inside plugin directory there should be the following structure:


On the server side by default plugins are loaded in the shared classloader too, however it is possible to load plugin in separate classloader by specifying special parameters in the teamcity-plugin.xml file.

Agent upgrade

When server starts it places all agent plugins into the <TeamCity home>/webapps/ROOT/update/plugins folder. After that if content of the folder has changed, agents will receive upgrade command from the server and download updated files automatically. Note that server tracks changes in this folder and can initiate agent upgrade procedure on the fly. In practice it means that if you want to deploy updated agent part of your plugin without server restart you can put your agent plugin to this folder.