B.3. 自定义 Karaf assembly


创建 Karaf 服务器装配的建议方法是使用 karaf- maven-plugin 提供的 karaf:assembly 目标。这会从项目的 pom.xml 文件中的 Maven 依赖项编译服务器。在 karaf-maven-plugin 配置中指定的捆绑包(或功能)和 pom.xml 中的 &lt ;dependencies > 部分指定的依赖项都可以进入自定义的 karaf assembly 中。

  • 对于 kar

    具有 kar 类型的依赖项将作为 startup (scope=compile), boot (scope=runtime)或 installed (scope=provided) kars in karaf-maven-plugin 添加。kars 被解压缩到工作目录(target/assembly),并且搜索功能 XML,并用作额外功能存储库(与给定 kar 的阶段相同)。

  • 对于 features.xml

    具有分类器 的依赖项 将用作启动(scope=compile)、引导(scope=runtime)或安装(scope=provided)存储库(在 karaf-maven-plugin 中)。不需要显式添加 kar 中的功能存储库。

  • 对于 jar 和捆绑包

    bundlejar 类型的依赖项将用作启动(scope=compile), boot (scope=runtime)或 installed (scope=provided)捆绑包(在 karaf-maven-plugin 中)。

B.3.1. Karaf:assembly 目标

您可以使用 karaf-maven-plugin 提供的 karaf:assembly 目标来创建 Karaf 服务器装配。此目标从项目 POM 中的 Maven 依赖项装有微服务风格服务器装配。在 OpenShift 项目的 Fuse 中,建议您将 karaf:assembly 目标绑定到 Maven 安装阶段。该项目使用捆绑包打包,项目本身将安装到 Karaf 容器中,方法是在 bootBundles 元素中列出它。

注意

在启动阶段仅包含 karaf 框架功能所需的元素,因为它将进入 etc/startup.properties,并在此阶段 karaf 功能服务没有完全启动。延迟其他元素来引导阶段。

Example

以下示例显示了 Quickstart 中的典型 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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.