close

Filter

loading table of contents...

Blueprint Developer Manual / Version 2110

Table Of Contents
4.1.6.1.1 Creating Plugins

A plugin is a (zipped) folder with the following structure:

classes/

The classes of your plugin

lib/

Third-party dependencies (JAR files) used by your plugin

plugin.properties

File for plugin configuration and metadata

The plugin.properties file provides metadata of your plugin. Most importantly, the properties give your plugin an identifier and configure a Spring configuration class that will be registered with the application context. These are the supported properties:

plugin.id

The ID of the plugin, must be unique, for example, MyPlugin (required)

plugin.version

The version of the plugin following the Semantic Versioning Specification, for example, 1.2.3 or 1.0.0-SNAPSHOT (required)

plugin.configuration-class

The Spring Configuration class, for example, com.acme.myplugin.MyPluginConfiguration (optional; required for Java extensions but not needed for plugins that only provide resources)

plugin.provider

The provider/author of the plugin, for example, ACME (optional)

plugin.dependencies

Comma-separated list of plugin IDs, for example, some-plugin,some-other-plugin. See Section 4.1.6.1.9, “Plugin Dependencies” for details. (optional)

plugin.add-on-for

The plugin ID of the plugin that this plugin is an add-on for, for example, some-plugin (optional)

plugin.requires

A version range of supported CMS versions (a single version means greater or equal to that version), for example, 10.2010.1, >=10.2010.2 & <10.2101.1 (optional)

Maven Plugin

To create a plugin with Maven, you can use the coremedia-plugin-maven-plugin. To this end, the packaging type of the pom must be set to coremedia-plugin, and the coremedia-plugin-maven-plugin has to be added with extensions set to true. The plugin will then create a plugin-zip during the package phase. It is possible to provide a custom plugin.properties file or to generate one using the configuration from the pom.

Example
@Import("SomePluginBeansConfig.class")
@Configuration(proxyBeanMethods = false)
public class MyPluginConfiguration {
    @Bean
    public MyExtension myExtension(SomeBean someBean) {
        return new MyExtension(someBean);
    }
}

Example 4.5. com.acme.myplugin.MyPluginConfiguration


public class MyExtension implements SomeCoremediaExtensionPoint {
    public MyExtension(SomeBean someBean) {
        ...
    }
    ...
}

Example 4.6. com.acme.myplugin.MyExtension


<project>
  <groupId>com.acme.myplugin</groupId>
  <artifactId>MyPlugin</artifactId>
  <version>1.2.4-SNAPSHOT</version>
  <packaging>coremedia-plugin</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>com.coremedia.maven</groupId>
        <artifactId>coremedia-plugins-maven-plugin</artifactId>
        <version>1.0.1</version>
        <extensions>true</extensions>
        <configuration>
          <pluginId>${project.artifactId}</pluginId>
          <pluginVersion>${project.version}</pluginVersion>
          <pluginConfigurationClass>com.acme.myplugin.MyPluginConfiguration</pluginConfigurationClass>
          <pluginProvider>ACME</pluginProvider>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Example 4.7. pom.xml


Search Results

Table Of Contents
warning

Your Internet Explorer is no longer supported.

Please use Mozilla Firefox, Google Chrome, or Microsoft Edge.