当前位置: 首页 > 知识库问答 >
问题:

使用Karaf特性构建repo-maven-plugin和CXF依赖导致无限循环

江俊能
2023-03-14

我使用的是org.apache.karaf.tooling/features-maven-plugin的2.3.12版本。

当cxf-core和CXF-Commands之间添加循环依赖项时,CXF3.2.x版本似乎已经开始出现这种情况。

它会输出数百个这些,然后抛出堆栈溢出异常:

[INFO] Adding contents for feature: cxf-core/3.2.14
[INFO] Adding contents for feature: cxf-commands/3.2.14
[INFO] Adding contents for feature: cxf-core/3.2.14
[INFO] Adding contents for feature: cxf-commands/3.2.14

下面是我的pom的pom插件部分:

                <groupId>org.apache.karaf.tooling</groupId>
                <artifactId>features-maven-plugin</artifactId>
                    <version>2.4.4</version>
                    <extensions>true</extensions>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.wagon</groupId>
                            <artifactId>wagon-http-lightweight</artifactId>
                            <version>3.4.1</version>
                        </dependency>
                    </dependencies>
                <executions>
                    <execution>
                        <id>add-features-to-repo</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-features-to-repo</goal>
                        </goals>
                        <configuration>
                            <features>
                                <feature>cxf-core/3.2.14</feature>
                            </features>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

这里是cxf特性的冒犯点--注意,“CXF-Core”对“CXF-Commands”特性有条件依赖,而“CXF-Commands”特性对“CXF-Core”有硬依赖。这在我看来是错误的,我看不出有任何方法告诉插件不要进入无限循环。

    <feature name="cxf-core" version="3.2.14">
        <feature version="3.2.14">cxf-specs</feature>
        <bundle start-level="30" dependency="true">mvn:org.apache.ws.xmlschema/xmlschema-core/2.2.5</bundle>
        <bundle start-level="25" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/1.2_5</bundle>
        <bundle start-level="30" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.fastinfoset/1.2.13_1</bundle>
        <bundle start-level="40">mvn:org.apache.cxf/cxf-core/3.2.14</bundle>
        <bundle start-level="40">mvn:org.apache.cxf/cxf-rt-management/3.2.14</bundle>
        <conditional>
            <condition>shell</condition>
            <feature version="3.2.14">cxf-commands</feature>
        </conditional>
    </feature>
    <feature name="cxf-commands" version="3.2.14">
        <feature>shell</feature>
        <feature version="3.2.14">cxf-core</feature>
        <bundle start-level="40">mvn:org.apache.cxf.karaf/cxf-karaf-commands/3.2.14</bundle>
    </feature>

共有1个答案

宰烈
2023-03-14

好吧,事实证明,features-maven-plugin已经被取代了。这个插件起作用了!

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

只需将目标更改为:features-add-to-repository,并确保设置了。这是正常的一个:

<repository>target/features-repo</repository>

并且,它识别并支持条件功能!

 类似资料:
  • 我正在创建一个简单的议程应用程序,它作为后端连接到Firebase。我想在每次写入时获取数据,我试图避开一个无限循环。 初始todos状态为null。然而,当我获取Firebase数据时,它会发生变化,然后导致组件本身的重新渲染,这将导致另一次获取,再次导致无限循环。我已经因此打破了Firebase中火花计划的限制,并因为临时阻塞而浪费了几天的工作。我认为这可以用useCallback钩子修复,但

  • 我正试图用Maven构建一个Java项目。我的pom。xml主要包括依赖项,其中一些依赖项有自己的可传递依赖项。 当我运行'mvn compile'时,大多数依赖项加载良好,但没有找到一些传递性依赖项,给出警告“[警告]artifact_name的POM丢失,没有可用的依赖项信息”。这导致Maven编译失败。 日志显示,已从Maven和Jboss公共存储库中搜索了依赖项。 > 在这种情况下,当没有

  • 我的期望: 如果用户输入的Int不在正确的范围内,程序将给他另一次机会,直到用户给出正确的类型。 所以,我需要一个块。但我有一个无限循环。 我的代码: 我读到: 重置. nextLine()扫描仪 使用扫描仪。扫描仪后面的nextLine()。nextInt() nextInt()的扫描仪错误 扫描仪在使用next()或nextFoo()后跳过nextLine()? 如何使用java.util.扫

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • 我使用的是ServiceMix6.1.0(包含Karaf 3.0.5),我有一个Maven项目。我想使用创建一个Karaf存档(.kar)。 我理解使用Karaf存档的目标:检索每个依赖项,以便可以在脱机环境中部署.kar。嗯...我以为我已经明白了...在创建.kar并部署它之后,我得到一个错误: 下面是: 下面是生成的: 为什么没有检索到JUnit依赖项? 所以...我错了吗?是一种预期的行为