为什么cxf-rt-transports-http在pom.xml中需要*两次*

时间:2013-10-18 15:12:58

标签: maven cxf maven-plugin pom.xml

将以下代码段添加到我的代码中:

Message message = PhaseInterceptorChain.getCurrentMessage();
HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST);
request.getRemoteAddr();

创建了一种情况,我必须添加以下依赖项(cxf.version定义为2.7.1):

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>

虽然我之前已经在我的pom.xml中有以下内容:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
        <type>jar</type>
        <scope>runtime</scope>
    </dependency>

如果我不添加以后的依赖项,项目将无法构建,抱怨“package org.apache.cxf.transport.http不存在”

如果删除之前的版本(<scope>runtime</scope>),项目将成功构建,但.war将无法与ClassNotFoundException: org.apache.cxf.endpoint.AbstractEndpointFactory一起部署。

为什么同一个pom.xml中需要出现2次相同的groupId / artifactId / version?

如何清理/整理我的pom.xml,以便此软件包仅列出一次?

1 个答案:

答案 0 :(得分:1)

问题解决了。为了所有人的利益,我提供了解决方案。

我所做的就是删除明显的冗余是移动较早的(即<type>jar</type>}),替换第二个并删除<scope>行。因此,仅保留:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
        <type>jar</type>
    </dependency>

但是进一步了解依赖列表。

依赖关系的顺序似乎很重要(如果您不知道,请更正)。