OSGi karaf-maven-plugin

karaf-maven-plugin

1. 配制 karaf 启动时加载 bundle

项目中需要在 karaf 中集成 cxf-dosgi-discovery-distributed 特性,所以需要在 karaf 开启时启动 cxf-dosgi-discovery-distributed 的 feature,只需要在 etc/org.apache.karaf.features.cfg 中加入如下的片段即可:

featuresRepositories=mvn:org.apache.karaf.features/standard/3.0.3/xml/features,mvn:org.apache.karaf.features/enterprise/3.0.3/xml/features,mvn:org.ops4j.pax.web/pax-web-features/3.1.4/xml/features,mvn:org.apache.karaf.features/spring/3.0.3/xml/features,mvn:org.apache.cxf.dosgi/cxf-dosgi/1.6.0/xml/features

featuresBoot=config,standard,region,package,kar,ssh,management,cxf-dosgi-discovery-distributed

其中:“mvn:org.apache.cxf.dosgi/cxf-dosgi/1.6.0/xml/features” 和 “cxf-dosgi-discovery-distributed” 为加入的部分。

上述配置以后,karaf 启动时就会从 maven 仓库下载所需要的 feature 并启动。
但是这样需要每次都从 maven 仓库中取,网络状况不好的时候很费时。最好的方式是把这些 feature 都放在本地。幸好 karaf 的 system 目录就是专干这个的。可以把 feature 相关的 bundle 都放在 system 中,这样就不再需要去 maven 仓库中取了。

2. karaf-maven-plugin 制作本地 feature 仓库

利用 karaf-maven-plugin 的 features-add-to-repository 即可实现:

<plugin>
    <groupId>org.apache.karaf.tooling</groupId>
    <artifactId>karaf-maven-plugin</artifactId>
    <version>3.0.3</version>
    <executions>
        <execution>
            <id>features-add-to-repo</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>features-add-to-repository</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>mvn:org.apache.cxf.dosgi/cxf-dosgi/1.6.0/xml/features</descriptor>
                    <descriptor>mvn:org.apache.karaf.features/standard/3.0.3/xml/features</descriptor>
                </descriptors>
                <features>
                    <feature>http-whiteboard</feature>
                    <feature>cxf-dosgi-discovery-distributed</feature>
                </features>
                <repository>target/features-repo</repository>
            </configuration>
        </execution>
    </executions>
</plugin>

生成的 maven 结构的目录会放在 target/features-repo 中,只需要把里面的目录原封不动拷贝到 karaf 的 system 目录下即可。下次启动时 feature 就会从这里面获取了。

posted on 2018-03-23 07:45  binarylei  阅读(661)  评论(0编辑  收藏  举报

导航