A l'instar des plug-ins d'automatisation, les plug-ins source sont définis avec trois fichiers : upgrade.xml, info.xml et plugin.xml. La structure des deux premiers fichiers est identique pour les deux types de plug-in. La structure du fichier plugin.xml varie selon le type de plug-in. Elle est décrite dans cette rubrique pour les plug-ins source. Pour des informations sur le fichier plugin.xml des plug-ins d'automatisation, voir Fichier plugin.xml des plug-ins d'automatisation.
La balise <server:plugin-type>Source</server:plugin-type> identifie le type de plug-in. Pour les plug-ins source, le type doit être Source :
<?xml version="1.0" encoding="UTF-8"?>
<!-- the xmlns:server argument is necessary to parse the tags with the server prefix -->
<plugin xmlns="http://www.urbancode.com/PluginXMLSchema_v1"
xmlns:server="http://www.urbancode.com/PluginServerXMLSchema_v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<identifier id="com.urbancode.air.plugin.source.Name" name="Nom du plug-in" version="1"/>
<description>Short description</description>
<tag>SCM/Name</tag>
<server:plugin-type>Source</server:plugin-type>
</header>
Un plug-in source comporte une étape, qui doit s'appeler Import Version :
<step-type name="Import Version">
<description>Creates a new component version and imports artifacts</description>
<properties>
</properties>
<post-processing><![CDATA[
if (properties.get("exitCode") != 0) {
properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
}
else {
properties.put("Status", "Success");
}
]]></post-processing>
<command program="${JAVA_HOME}/bin/java">
<arg value="${JAVA_OPTS}"/>
<arg value="-jar"/>
<arg file="FileSystemSourceConfig.jar"/>
<arg value="ImportVersion"/>
<arg file="${PLUGIN_INPUT_PROPS}"/>
<arg file="${PLUGIN_OUTPUT_PROPS}"/>
</command>
</step-type>
Conformément au fragment de code ci-dessous, les plug-ins source possèdent deux groupes de propriétés. Les propriétés de type Component sont configurées dans la fenêtre Créer un composant. Les propriétés de type Import sont configurées dans la fenêtre Importer des composants.
<!-- ==================================== -->
<!-- Properties -->
<!-- ==================================== -->
<server:property-group type="Component" name="FileSystemComponentProperties">
<server:property name="property-name" required="true">
<server:property-ui type="textBox"
label="property-label"
description="property-description" />
</server:property>
</server:property-group>
<!-- If left empty or omitted then no dialog will appear -->
<server:property-group type="Import" name="FileSystemImportProperties">
<server:property name="property-name" required="true">
<server:property-ui type="textBox"
label="property-label"
description="property-description" />
</server:property>
</server:property-group>
</plugin>