2013-02-26 244 views
5

我們想編寫我們自己的wso2碳自定義擴展(功能)。是否有一些創作功能的文檔?編寫自定義功能

我們確實設法「破解」我們編寫自定義功能的方式。但我們如何託管它?看來Carbon正在尋找一些非常具體的存儲庫描述符 - artifacts.jar和content.jar

我們如何生成這些描述符而不需要綁定到Carbon構建中。是否有一些文檔描述如何設置第三方功能存儲庫?

回答

1

Creating-your-own-wso2-carbon-components網絡研討會討論瞭如何創建碳組件,以及這些組件的功能。它涵蓋了相當多的基礎知識以及最佳實踐。

要託管您編寫的創建功能,您需要從這些功能生成p2存儲庫。 p2-repo概念來自WSO2產品使用的下劃線Eclipse equinox項目。

WSO2已經編寫了自己的maven插件,名爲carbon-p2-plugin,它有助於生成p2-repo。這是你如何做到的。只需創建一個新的maven項目(包裝:pom),然後在carbon-p2-plugin插件配置下設置要發佈的功能。以下是您可以使用的示例pom.xml。這是從p2-repo generation pom.xml of carbon 4.1.0複製的,我簡化了它。

我測試過這個pom文件,它對我有用。有兩個示例功能定義。將這些featureArtifactDef替換爲您自己的特徵定義。格式是$ groupId:$ artifactId:$ version。

當你通過maven構建它時,maven創建target/p2-repo目錄。這包含p2-repository,其中包含完整的p2-repo,包括artifacts.jar和content.jar。您可以使用此文件夾來安裝功能,或者您可以將其託管在某處。對託管沒有特殊要求。

<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>