1

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

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 以便这个包只列出一次?

4

1 回答 1

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>

但在依赖项列表的下方。

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

于 2013-10-18T16:45:52.480 回答