49

バージョンの収束を強制するように構成された Enforcer プラグインで maven 3 を使用しています。Spring 3.1.2 と Spring Security 3.1.3 を使用しています。

問題は、Spring 3.1.3 POM が Spring 3.0.7 への依存関係を宣言していることです。これは、Spring セキュリティに最低限必要なバージョンであるためです。これは、推移的な依存関係グラフに Spring 3.1.2 と Spring 3.0.7 の両方が含まれているため、エンフォーサ プラグインが不平を言うことを意味します。

修正は、Spring セキュリティの依存関係として Spring 3.0.7 を明示的に除外し、エンフォーサ プラグインが満足するようにすることです。

以下のコード スニペットはまさにそれを行います。問題は、スプリング セキュリティの各 jar に対して同じスニペットを何度も繰り返さなければならないことです。これは面倒で、pom を読みにくくします。伝える方法はありますか?線に沿って何かを作った。

依存関係 org.springframework.security の artificatId に関係なく、Spring フレームワークへのセキュリティ フレームワークの依存関係を無視しますか?

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-acl</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-asm</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>

                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>aopalliance</artifactId>
                    <groupId>aopalliance</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-web</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
4

3 に答える 3

32

これはおそらくあまり役​​に立ちませんが、除外でワイルドカードを許可する機能のリクエストがありますが、現在のリリース バージョンの Maven (3.0.4) にはありません。(編集: この機能は Maven 3.2.1 に含まれるようになりました)

https://issues.apache.org/jira/browse/MNG-3832

興味深いのは、この JIRA の問題のコメントです。

何が起こっているのかわかりませんが、Maven 3.0.3 では次のように動作するようです:

<exclusion>
    <groupId>*</groupId>
    <artifactId>*</artifactId>
</exclusion>

ただし、これにより次の警告が生成されます。

[警告] 値「*」を持つ my.groupid:my.artifactid:ejb-client の「dependencies.dependency.exclusions.exclusion.groupId」は、有効な ID パターンと一致しません。@ 31 行目、30 桁目

[警告] 値「*」を持つ my.groupid:my.artifactid:ejb-client の「dependencies.dependency.exclusions.exclusion.artifactId」は、有効な ID パターンと一致しません。@ 32 行目、33 桁目

だから私はおそらくそれをすべきではありませんが、うまくいきます。

そのため、Maven 3.0.3 以降で artifactId ワイルドカードを使用して動作させることができる場合がありますが、警告が表示され、それ以降のバージョンとの互換性は保証されません。

于 2012-10-23T01:33:22.870 に答える
-1

I encountered the same problem. I think you should explicit include Spring 3.2.x in your pom.xml to enforce the spring version in level 0 when Maven solve the conflict jars. Please refer to: http://www.baeldung.com/spring-security-with-maven

于 2013-05-18T07:37:45.907 に答える