B.3. 自定义的 Karaf assembly
创建 Karaf 服务器汇编的建议方法是使用 karaf- maven-plugin 提供的 目标。这会从项目的 karaf:assemblypom.xml 文件中的 Maven 依赖项组装服务器。karaf-maven-plugin 配置中指定的捆绑包(或功能)和 pom.xml 中的 < ;dependencies > 部分指定的依赖项都可以进入自定义的 karaf assembly。
对于 kar
kar类型的依赖项将作为启动(scope=compile)、boot (scope=runtime)或在 karaf-maven-plugin 中添加(scope=provided) kars kars。kars 被解压缩到工作目录(目标/装配)和功能 XML,并搜索功能 XML,并用作附加功能存储库(与给定 kar 阶段相等的阶段)。对于 features.xml
具有
功能分类器的依赖项将用作启动(scope=compile)、boot (scope=runtime)或在 karaf-maven-plugin 中安装(scope=provided)存储库。不需要显式添加在 kar 中找到的功能存储库。对于 jar 和 bundle
与
bundle或jar类型的依赖项将用作启动(scope=compile)、boot (scope=runtime)或在 karaf-maven-plugin 中安装(scope=provided)捆绑包。
B.3.1. Karaf:assembly 目标
您可以使用 karaf-maven-plugin 提供的 karaf:assembly 目标创建 Karaf 服务器装配。此目标从项目 POM 中的 Maven 依赖项组装一个微服务风格的服务器组。对于 OpenShift 项目中的 Fuse,我们建议您将 karaf:assembly 目标绑定到 Maven 安装阶段。该项目使用捆绑包打包,项目本身会在 bootBundles 元素中列出它,从而安装到 Karaf 容器中。
在启动阶段仅包含 karaf 框架功能等必要元素,因为它将进入 etc/startup.properties,在此阶段 karaf 功能服务不会完全启动。将其他元素延迟到启动阶段。
示例
以下示例显示了快速启动中典型的 Maven 配置:
<plugin>
<groupId>org.jboss.redhat-fuse</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<version>${fuse.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<id>karaf-assembly</id>
<goals>
<goal>assembly</goal>
</goals>
<phase>install</phase>
</execution>
</executions>
<configuration>
<karafVersion>{karafMavenPluginVersion}</karafVersion>
<useReferenceUrls>true</useReferenceUrls>
<archiveTarGz>false</archiveTarGz>
<includeBuildOutputDirectory>false</includeBuildOutputDirectory>
<startupFeatures>
<feature>karaf-framework</feature>
</startupFeatures>
<bootFeatures>
<feature>shell</feature>
<feature>jaas</feature>
<feature>aries-blueprint</feature>
<feature>camel-blueprint</feature>
<feature>fabric8-karaf-blueprint</feature>
<feature>fabric8-karaf-checks</feature>
</bootFeatures>
<bootBundles>
<bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
</bootBundles>
</configuration>
</plugin>