Apache Karaf 功能离线问题

Apache Karaf feature offline issue

在 karaf org.apache.karaf.features.cfg 文件中

我已经添加了

featuresRepositories=mvn:org.apache.cxf.karaf/apache-cxf/3.0.8/xml/features

featuresBoot = cxf-jaxws

当 karaf 使用连接启动时,可以获取并安装 cxf 功能。

但是没有连接会失败,如何预装cxf功能?

这可能远非最佳解决方案(很想听听更好的解决方案),但您可以使用 karaf-feature-archetype 创建离线存储库项目并配置 karaf-maven-plugin 使用如下内容配置:

<plugin>
    <groupId>org.apache.karaf.tooling</groupId>
    <artifactId>karaf-maven-plugin</artifactId>

    <configuration>
        <startLevel>50</startLevel>
        <aggregateFeatures>true</aggregateFeatures>
        <checkDependencyChange>true</checkDependencyChange>
        <failOnDependencyChange>false</failOnDependencyChange>
        <logDependencyChanges>true</logDependencyChanges>
        <overwriteChangedDependencies>true</overwriteChangedDependencies>
    </configuration>

    <executions>
        <execution>
            <id>features-add-to-repo</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>features-add-to-repository</goal>
            </goals>
            <configuration>  
                <descriptors>
                    <!-- Feature repository paths -->
                    <descriptor>mvn:groupId/artifactId/version/xml/features</descriptor>
                </descriptors>
                <features>
                    <!-- features and their artifacts + dependencies to add to offline repository-->
                    <feature>featureName</feature>
                    <feature>featureName/version</feature>
                </features>
                <repository>target/offline-repository</repository>
            </configuration>
        </execution>
    </executions>
</plugin>

打包项目时,即使用命令 maven clean install(在具有在线访问权限的环境中),它将在目标文件夹下生成离线存储库,您可以将其复制到离线环境并通过添加告诉 karaf 使用它它到文件 org.ops4j.pax.url.mvn.cfg 中的 org.ops4j.pax.url.mvn.defaultRepositoriesfile:${user.home}/offline-repository@snapshots@id=local 如果它位于主目录中。

features.xml 本身可以为空这只是为了使用 karaf-maven-plugin 而不是创建一个实际的功能库。

如果您需要创建新版本的离线存储库来替换旧版本,请小心。如果新版本缺少当前安装到 karaf 的任何工件,则在尝试 remove/uninstall 它们时可能会导致问题。