2012-06-03 191 views
0

我正在构建一个自包含的jar与maven树荫插件(uberjar),并且我得到所有spring-security-crypto类的警告:弹簧安全核心和弹簧安全加密maven文物(重复类)

[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. 这可以改变,如果在春季安全核心的类没有更新。
  2. 更重要的是我不明白为什么会发生这种情况?值得注意的是,spring-security-core本身对spring-security-crypto有编译依赖性,这完全让我感到困惑。

想了解任何解释和解决方案。

回答

2

这是a bug in 3.1.0。不应该从核心到密码依赖。单独的加密jar仅用于其他一些不使用Spring Security的Spring项目。这是构建配置的方式的一个副作用,它在核心pom中结束。

只需在spring-security-core的pom依赖项中添加一个Maven exclusion即可阻止它将crpyto jar作为传递依赖项。