2013-02-26 14 views
5

Vorremmo scrivere la nostra estensione personalizzata (funzione) per il carbonio wso2. C'è qualche documentazione per le funzionalità di authoring?Scrittura di una funzione personalizzata

Siamo riusciti a "hackerare" il nostro modo di scrivere una funzione personalizzata. Ma come lo ospitiamo? Sembra che Carbon stia guardando alcuni descrittori di repository molto specifici: artefacts.jar e content.jar

Come possiamo generare questi descrittori senza legare la build di carbonio. C'è qualche documentazione che descrive come configurare un repository di funzionalità di terze parti?

risposta

1

Creating-your-own-wso2-carbon-components webinar illustra la creazione di componenti in carbonio e una funzionalità per tali componenti. Copre un bel po 'di basi e buone pratiche pure.

Per ospitare le funzioni create che sono state scritte, è necessario generare un repository p2 da quelle funzionalità. Il concetto p2-repo deriva dal progetto sottolineato Eclipse equinox utilizzato dai prodotti WSO2.

WSO2 ha scritto il proprio plugin Maven chiamato carbon-p2-plugin che aiuta a generare un ppo-repo. Ecco come puoi farlo. È sufficiente creare un nuovo progetto Maven (packaging: pom) e quindi impostare le funzionalità che si desidera pubblicare sotto la configurazione del plugin carbon-p2-plugin. Di seguito è riportato un esempio di pom.xml che è possibile utilizzare. Questo è stato copiato dal p2-repo generation pom.xml of carbon 4.1.0 e l'ho semplificato.

Ho testato questo file pom, ha funzionato per me. Esistono due definizioni di funzionalità di esempio. Sostituisci quelle featureArtifactDef con le tue definizioni di funzione. Il formato è $ groupId: $ artifactId: $ version.

Quando si crea questo tramite maven, maven crea la directory target/p2-repo. Questo contiene il repository p2 che contiene il repository p2 completo, compresi artifacts.jar e content.jar. Puoi semplicemente usare questa cartella per installare le funzionalità, oppure puoi ospitarla da qualche parte. Non ci sono requisiti speciali per l'hosting.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <parent> 
     <groupId>org.wso2.carbon</groupId> 
     <artifactId>carbon-features</artifactId> 
     <version>4.1.0</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <artifactId>mysample-feature-repository</artifactId> 
    <version>4.1.0</version> 
    <packaging>pom</packaging> 
    <name>WSO2 Carbon - Feature Repository</name> 

    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.wso2.maven</groupId> 
      <artifactId>carbon-p2-plugin</artifactId> 
      <version>1.5.2</version> 
      <executions> 
       <execution> 
       <id>2-p2-repo-generation</id> 
       <phase>package</phase> 
       <goals> 
        <goal>p2-repo-gen</goal> 
       </goals> 
       <configuration> 
        <p2AgentLocation>${basedir}/target/p2-agent</p2AgentLocation> 
        <metadataRepository>file:${basedir}/target/p2-repo</metadataRepository> 
        <artifactRepository>file:${basedir}/target/p2-repo</artifactRepository> 
        <publishArtifacts>true</publishArtifacts> 
        <publishArtifactRepository>true</publishArtifactRepository> 
        <featureArtifacts> 

<!-- change the featureArtifactDef to match your needs --> 

         <featureArtifactDef> 
            org.wso2.carbon:org.wso2.carbon.service.mgt.feature:4.1.0 
         </featureArtifactDef> 
         <featureArtifactDef> 
            org.wso2.carbon:org.wso2.carbon.registry.core.feature:4.1.0 
         </featureArtifactDef> 


       </featureArtifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project>