首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用karaf-maven-plugin 4严格依赖约束检查

如何禁用karaf-maven-plugin 4严格依赖约束检查
EN

Stack Overflow用户
提问于 2015-11-10 09:28:47
回答 1查看 1.1K关注 0票数 1

目前,我正在从karaf 3.0.5转移到最新版本4.0.2,我使用karaf-maven-plugin组装我自己的karaf。我的水是这样的。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<parent>
    <groupId>my.own.group</groupId>
    <artifactId>assemble</artifactId>
    <version>1.14.0-SNAPSHOT</version>
    <relativePath>..</relativePath>
</parent>

<artifactId>karaf-customize</artifactId>
<modelVersion>4.0.0</modelVersion>
<packaging>karaf-assembly</packaging>

<dependencies>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>framework</artifactId>
        <version>${karaf.version}</version>
        <type>kar</type>
    </dependency>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>standard</artifactId>
        <classifier>features</classifier>
        <version>${karaf.version}</version>
        <type>xml</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf.karaf</groupId>
        <artifactId>apache-cxf</artifactId>
        <classifier>features</classifier>
        <version>${cxf.version}</version>
        <type>xml</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>enterprise</artifactId>
        <classifier>features</classifier>
        <version>${karaf.version}</version>
        <type>xml</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>my.own.group</groupId>
        <artifactId>kar-archive</artifactId>
        <version>1.14.0-SNAPSHOT</version>
        <type>pom</type>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>my.own.group</groupId>
        <artifactId>karaf-branding</artifactId>
        <version>1.14.0-SNAPSHOT</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>com.alutam</groupId>
        <artifactId>ziputils</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
        <version>1.6.3</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>karaf-maven-plugin</artifactId>
            <version>${karaf.version}</version>
            <extensions>true</extensions>
            <configuration>
                <javase>1.8</javase>
                <bootFeatures>
                    <feature>jasypt-encryption</feature>
                    <feature>config</feature>
                    <feature>standard</feature>
                    <feature>region</feature>
                    <feature>management</feature>
                    <feature>bundle</feature>
                    <feature>package</feature>
                    <feature>kar</feature>
                    <feature>ssh</feature>
                    <feature>http</feature>
                    <feature>cxf</feature>
                    <feature>service-wrapper</feature>
                    <feature>jdbc</feature>
                    <feature>system</feature>
                </bootFeatures>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

使用此配置,我确实获得了以下几个依赖项的错误。

代码语言:javascript
复制
Caused by: org.osgi.framework.BundleException: Unsupported 'Bundle-ManifestVersion' value: 1
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.doBuild(ResourceBuilder.java:88)
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.build(ResourceBuilder.java:78)

我想它发生在这个解析器中。原因是一些旧的第三人库仅在其清单文件中设置了Bundle-ManifestVersion: 1。对于plugin3.x来说,这一点也不重要。相反,karaf plugin 4.x在上面的消息中失败了。我所知道的解决这个问题的唯一方法是要么从源重新构建,要么重新创建雷帕克洞罐。

是否还有其他方式(比如对karaf plugin的配置)来禁用此约束检查?因为再一次,要让所有这些捆绑在一起,需要做大量的工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 13:12:40

在更新到Karaf 4时,我遇到了同样的错误,您有两个选择:

使用bndtools:分析冲突依赖关系

  1. 下载bnd工具
  2. 打开下载了bnd-2.4.0.jar的shell。
  3. 类型: java -jar bnd-2.4.0.jar包装-o osgify-Reliency.jar dependency.jar,其中dependency.jar是您的第三方,osgify-Reliency.jar将是输出。
  4. 部署到maven repo覆盖以前的maven坐标,或者使用不同的坐标部署第三方。 mvn部署:部署-文件-Dfile osgify-依赖. mvn.

启用包装协议

为您添加maven karaf插件包装和包装功能。

因此,您可以使用包装协议修复已损坏的MANIFEST.MF。

在一些空手道的特征:

代码语言:javascript
复制
<bundle>wrap:mvn:group.id/third.party.artefact.id/version</bundle>

在您的pom.xml通知特性包装/包装中。

代码语言:javascript
复制
 <plugin>
    <groupId>org.apache.karaf.tooling</groupId>
    <artifactId>karaf-maven-plugin</artifactId>
    <extensions>true</extensions>
    <executions>
    </executions>
    <configuration>

     <!-- no startupFeatures -->
     <bootFeatures>
      <feature>feature</feature>
      <feature>jaas</feature>
      <feature>shell</feature>
      <feature>ssh</feature>
      <feature>management</feature>
      <feature>bundle</feature>
      <feature>config</feature>
      <feature>deployer</feature>
      <feature>diagnostic</feature>
      <feature>instance</feature>
      <feature>kar</feature>
      <feature>log</feature>
      <feature>package</feature>
      <feature>service</feature>
      <feature>system</feature>
      <feature>wrap</feature>
      <feature>aries-blueprint</feature>
     </bootFeatures>
     <installedFeatures>
      ..
      <feature>wrapper</feature>
     </installedFeatures>
    </configuration>
   </plugin>

这里有我测试的完整代码:

https://github.com/antoniomaria/gazpachoquest/blob/master/karaf-assembly/pom.xml

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33626713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档