Apache Karaf离线环境下CXF feature预安装方法咨询
Karaf离线环境预安装CXF Feature解决方案
失败原因:默认配置下Karaf加载feature时会优先从配置的远程maven仓库拉取不存在的依赖包,离线环境无法访问远程仓库就会安装失败。
你可以按照以下任意一种方案实现离线可用:
方案一:直接迁移预缓存的Karaf目录
- 先在有网络的环境中,启动你已经配置好
featuresRepositories和featuresBoot参数的Karaf,等待启动完成后确认cxf功能正常,执行feature:list | grep cxf-jaxws可以看到状态为Started。 - 正常关闭Karaf,此时安装目录下的
data/cache、data/repository以及system目录已经缓存了所有cxf相关的feature元数据和依赖jar包。 - 把整个Karaf目录完整拷贝到离线环境的服务器中,直接启动即可正常加载cxf-jaxws feature,无需联网拉取资源。
方案二:单独导出导入依赖包
如果你不想迁移整个Karaf目录,可以单独导出cxf相关依赖:
- 在联网环境的Karaf中安装完cxf-jaxws feature后,执行
package:export --features cxf-jaxws /路径/导出的/cxf-deps.zip命令,导出包含所有cxf相关依赖的压缩包。 - 把压缩包拷贝到离线环境的Karaf中,将压缩包内的所有文件解压到Karaf安装目录的
system文件夹下。 - 保持你原有
org.apache.karaf.features.cfg的配置不变,启动Karaf就会优先从本地system目录加载依赖,不会请求远程仓库。
方案三:私有仓库适配
如果离线环境有内部私有maven仓库,也可以用该方案:
- 在联网环境把
org.apache.cxf.karaf:apache-cxf:3.0.8:xml:features对应的pom、feature文件以及所有传递依赖全部下载下来,上传到内部私有maven仓库。 - 修改离线环境Karaf的
etc/org.ops4j.pax.url.mvn.cfg配置,将内部私有仓库地址添加到org.ops4j.pax.url.mvn.repositories参数的最前面,同时移除配置中的公共远程仓库地址。 - 保持原有feature配置不变,启动Karaf即可从内部私有仓库拉取依赖完成安装。
内容的提问来源于stack exchange,提问作者EvenZhang
相关产品推荐
相关产品推荐

