Descriptor

The plugin descriptor /META-INF/plugin.xml tells beaTunes what plugins it needs to instantiate, what version of beaTunes is required and so on. All the important information about your plugin should be right in there. Inside the application it is represented as an instance of the class com.tagtraum.core.app.PluginDescriptor.

As an example, take a look at the keytocomment descriptor (part of the demo plugin available at GitHub ). It's really pretty self-explanatory.

/META-INF/plugin.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- plugin descriptor for beaTunes Java plugin -->
<plugins>
    <name>Copy key to comment</name>
    <!-- unique id -->
    <id>keytocomment</id>
    <!-- version, to be replaced by maven during the build -->
    <version>${pom.version}</version>
    <!-- meaningful description of what this plugin does -->
    <description>Analysis task that copies the key value to the comment field.</description>
    <license>
        <name>GNU Lesser General Public License 2.1</name>
        <url>http://www.gnu.org/licenses/lgpl.txt</url>
    </license>
    <!-- change notes, also to be displayed in the plugin preferences pane -->
    <change-notes>2.0.0:
        Adjustments for beaTunes 3:
        - Removed empty editor, as it is now taken care of by beaTunes.
        - Removed explicit persisting of song data, as it is now done implicitly.
        - Removed UI update code, as it is now automatic.

        1.0.5:
        Minor internal updates. Preparation for beaTunes 3.

        1.0.4:
        Update for beaTunes 2.1.4.

        1.0.3:
        Update for beaTunes 2.1.

        1.0.2:
        First release.
    </change-notes>
    <!-- organisation that produced this thing -->
    <vendor>
        <name>tagtraum industries incorporated</name>
        <url>http://www.tagtraum.com/</url>
        <email>[email protected]</email>
        <logo>http://www.tagtraum.com/images/tagtraum-logo.png</logo>
    </vendor>
    <!-- required beaTunes version - please actually fill these in -->
    <beatunes-version>
        <min>3.0.0</min>
        <max>3.9.9</max>
    </beatunes-version>

    <!-- list of plugin classes, beaTunes is supposed to instantiate, multiple plugins are allowed -->
    <plugin class="com.beatunes.keytocomment.KeyToComment"/>
</plugins>
            

BTW: All this information is not only used by beaTunes internally, but also displayed in the plugin preference pane.