1

プロジェクトに 2 つのライブラリをインポートしました

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

今、パッケージ javaee-web-api のクラス HttpServletRequest を使用したいと考えています。問題は、javaxサーブレットにもこのクラスが含まれており、アプリケーションがライブラリの代わりにこれを使用していることです。どうすれば変更できますか?

4

3 に答える 3

2

それはいけません。いずれかを削除します。両方のクラスが同じ名前空間/パッケージにあります。HttpServletRequest標準で定義されており、同じように動作する必要があります。

于 2012-08-13T07:12:28.973 に答える
1

Ok I found it. I can exclude this library:

<exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>

and then it works

于 2012-08-13T07:46:59.537 に答える
1

が親ポンから来ていることを説明するコメントがあるので、javax.servletそれは不可能だと思います。以前に議論されました:親 POM から継承されたアーティファクトを除外する方法はありますか?

親 pom に何らかのコントロールがある場合は、オプションのタグを持つように変更してみてください。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
    <optional>true</optional>
</dependency>

その後、子プロジェクトの推移的な依存関係として含まれません。

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

于 2012-08-13T07:29:52.003 に答える