Recherche
...
Le fichier MANIFEST.MF est le fichier de configuration principal d'un plugin OSGI.
Exemple :
Bloc de code |
---|
Manifest-Version: 1.0 |
...
Bundle-ManifestVersion: 1 |
...
Bundle-Name: Nuxeo Sample project |
...
Bundle-SymbolicName: org.orioai.nuxeo.workflow;singleton:=true |
...
Bundle-Version: 1.0.0 |
...
Bundle-Vendor: ORI-ORI.org |
...
Provide-Package: org.orioai.nuxeo.workflow |
...
Require-Bundle: org.nuxeo.runtime, |
...
org.nuxeo.ecm.core.api, |
...
org.nuxeo.ecm.core, |
...
org.nuxeo.ecm.webapp.core |
...
Nuxeo-Component: OSGI-INF/core-types-contrib.xml, |
...
OSGI-INF/actions-contrib.xml, |
...
OSGI-INF/orioaiworkflow-service-contrib.xml, |
...
OSGI-INF/wsdl-orioaiworkflow-contrib.xml, |
...
OSGI-INF/orioainuxeo2xml-service-contrib.xml, |
...
OSGI-INF/xsl-orioainuxeo2xml-contrib.xml |
...
Bundle-ClassPath: qname.jar |
...
Import-Package: javax.xml.namespace |
...
Bloc de code |
---|
<?xml version="1.0"?> |
...
<component name="org.orioai.nuxeo.workflow.core-types"> |
...
<extension target="org.nuxeo.ecm.core.schema.TypeService" |
...
point="schema"> |
...
<schema name="ori" src="schemas/ori.xsd" prefix="ori" /> |
...
</extension> |
...
<extension target="org.nuxeo.ecm.core.schema.TypeService" |
...
point="doctype"> |
...
...
<doctype name="File" extends="Document"> |
...
<schema name="common" /> |
...
<schema name="file" /> |
...
<schema name="dublincore" /> |
...
<schema name="uid" /> |
...
<schema name="files" /> |
...
<schema name="ori" /> |
...
<facet name="Downloadable" /> |
...
<facet name="Versionable" /> |
...
<facet name="Publishable" /> |
...
<facet name="Indexable" /> |
...
<facet name="Commentable" /> |
...
</doctype> |
...
</extension> |
...
</component> |
/component@name | Nom du composent. |
/component/extension@target | Nom du composant que l'on va étendre. Correspond au /component@name du point d'extension utilisé. |
/component/extension@point | Un composant peut contenir plusieurs points d'extension utilisables. On spécifie avec ce paramètre celui que l'on veut étendre. |
/component/extension/* | Liste des informations que l'on va passer un point d'extension que l'on étend. Cette liste est spécifique à chaque point d'extension. |
Bloc de code |
---|
<?xml version="1.0"?> |
...
<component name="org.orioai.nuxeo.workflow.OriOaiWorkflowService"> |
...
<implementation |
...
class="org.orioai.nuxeo.workflow.OriOaiWorkflowServiceMock" /> |
...
<service> |
...
<provide |
...
interface="org.orioai.nuxeo.workflow.OriOaiWorkflowService" /> |
...
</service> |
...
<documentation>explication sur le service</documentation> |
...
<extension-point name="wsUrl"> |
...
<documentation>explication sur le point d'extension</documentation> |
...
<object class="org.orioai.nuxeo.workflow.WsDescriptor" /> |
...
</extension-point> |
...
</component> |
/component@name | Nom du composent. | |
/component/implementation@class | Classe java concrète implémentant le service | |
/component/service/provider@interface | Nom de l'interface java qui est implémentée par /component/implementation@class | |
/component/documentation | Texte d'information sur le service. Il est utile pour les personnes qui seront amenés à travailler avec votre point d'extension. Il est utilisé pour la génération automatique de la documentation de référence sur les points d'extension. | |
/component/extension-point@name | Nom du point d'extension offert par le composant. Il peut y avoir plusieurs balises /component/extension-point | |
/component/extension-point/documentation | Texte d'information sur le point d'extension | |
/component/extension-point/object | Nom du bean qui contiendra les configurations du point d'extension lorsqu'il sera étendu. |
|
...
Le fichier deployment-fragment.xml permet justement de spécifier comment le plugin va adapter l'environnement d'exécution java dans lequel il sera appelé.
Exemple :
Bloc de code |
---|
<?xml version="1.0"?> |
...
<fragment> |
...
<extension target="application#MODULE"> |
...
<module> |
...
<java>$\{bundle.fileName}</java> |
...
</module> |
...
</extension> |
...
<extension target="web#CONTEXT-PARAM"> |
...
<context-param> |
...
<param-name>org.jboss.seam.core.init.debug</param-name> |
...
<param-value>true</param-value> |
...
</context-param> |
...
</extension> |
...
<install> |
...
<!- Unzip the war template -> |
...
<unzip from="$\{bundle.fileName}" to="/"> |
...
<include>nuxeo.war/**</include> |
...
</unzip> |
...
<!- Append .properties files -> |
...
<delete path="orioainuxeodir.tmp" /> |
...
<mkdir path="orioainuxeodir.tmp" /> |
...
<unzip from="$\{bundle.fileName}" to="orioainuxeodir.tmp"> |
...
<include>*/.properties</include> |
...
</unzip> |
...
<append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages.properties" |
...
to="nuxeo.war/WEB-INF/classes/messages.properties" |
...
addNewLine="true" /> |
...
<append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages_fr.properties" |
...
to="nuxeo.war/WEB-INF/classes/messages_fr.properties" |
...
addNewLine="true" /> |
...
<delete path="orioainuxeodir.tmp" /> |
...
</install> |
...
</fragment> |
/fragment/extension@target | Nuxeo utilise des fichiers templates (dans le répertoire nuxeo.ear/OSGI-INF/templates). la propriété /fragment/extension@target permet de cibler ce fichier (partie avant le # sans l'extension .xml) ainsi que le positionnement dans ce fichier (partie après le # qui permet de pointer sur une balise de la forme %{MODULE}%) |
/fragment/extension/* | Portion de XML qui sera intégrée dans le fichier template |
/fragment/install | Contient du code de type ant permettant de faire certaines actions sur le système de fichiers de l'application. |
Note à propos de ${bundle.fileName} | ${bundle.fileName} correspond au fichier jar du plugin courant |
...