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.defaultRepositories
即 file:${user.home}/offline-repository@snapshots@id=local
如果它位于主目录中。
features.xml 本身可以为空这只是为了使用 karaf-maven-plugin 而不是创建一个实际的功能库。
如果您需要创建新版本的离线存储库来替换旧版本,请小心。如果新版本缺少当前安装到 karaf 的任何工件,则在尝试 remove/uninstall 它们时可能会导致问题。
在 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.defaultRepositories
即 file:${user.home}/offline-repository@snapshots@id=local
如果它位于主目录中。
features.xml 本身可以为空这只是为了使用 karaf-maven-plugin 而不是创建一个实际的功能库。
如果您需要创建新版本的离线存储库来替换旧版本,请小心。如果新版本缺少当前安装到 karaf 的任何工件,则在尝试 remove/uninstall 它们时可能会导致问题。