0

我正在使用 maven shade 插件(一个 uberjar)构建一个独立的 jar,并且我收到所有 spring-security-crypto 类的警告:

[WARNING] We have a duplicate org/springframework/security/crypto/bcrypt/BCrypt.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/bcrypt/BCryptPasswordEncoder.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/codec/Base64.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/codec/Hex.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/codec/InvalidBase64CharacterException.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/codec/package-info.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/codec/Utf8.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/encrypt/AesBytesEncryptor$1.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
[WARNING] We have a duplicate org/springframework/security/crypto/encrypt/AesBytesEncryptor.class in ***\.m2\repository\org\springframework\security\spring-security-crypto\3.1.0.RELEASE\spring-security-crypto-3.1.0.RELEASE.jar
...

我查看了 spring-security-core jar,发现它包含 spring-security-crypto 包含的所有类。此外,在比较来源时,您会看到它们是相同的。

我知道我可以忽略它,因为类是相同的,但是:

  1. 如果 spring-security-core 中的类没有更新,这可能会改变。
  2. 更重要的是我不明白为什么会这样?重要的是要注意 spring-security-core 本身对 spring-security-crypto 有编译依赖,这完全让我感到困惑。

希望有任何解释和解决方案。

4

1 回答 1

2

这是3.1.0 中的错误。从核心到加密不应该存在依赖关系。单独的加密 jar 仅用于其他一些不使用 Spring Security 的 Spring 项目。这是构建配置方式的副作用,它最终出现在核心 pom.xml 中。

只需将Maven 排除项添加到您的 pom 依赖项中,spring-security-core以阻止它将 crpyto jar 作为传递依赖项拉入。

于 2012-06-04T01:23:21.973 回答