我继承了一个java项目,在POM.xml中有这个:
<properties>
<jjwt.version>0.11.1</jjwt.version>
</properties>
// from https://github.com/jwtk/jjwt#maven
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
// what is this "jjwt" dep, and why might it be using a different version?
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
这个“jjwt” dep 是什么,为什么它可能使用不同的版本?
我没有看到任何提及它https://github.com/jwtk/jjwt https://github.com/jwtk/jjwt
但它在这里:https://mvnrepository.com/artifact/io.jsonwebtoken https://mvnrepository.com/artifact/io.jsonwebtoken
在 JJWT 版本 0.10.0 之前,API 和实现都打包为单个工件,io.jsonwebtoken:jjwt
.
从版本 0.10.0 开始,API 和实现被分为两个不同的工件。
摘录自JJWT 发行说明,版本 0.10.0 https://github.com/jwtk/jjwt/blob/master/CHANGELOG.md#0100:
JJWT 的新模块化设计利用编译依赖项和运行时依赖项之间的区别来确保您仅依赖于在应用程序中可以安全使用的公共 API。所有内部/私有实现类已移至新的 jjwt-impl 运行时依赖项。
如果您过去依赖过任何内部实现类,您有两种选择:
-
重构您的代码以使用 jjwt-api .jar 中的仅限公共 API 类和接口。您在内部实现中可能使用的任何功能都应该可以通过该 .jar 中更新的更清晰的接口和帮助器类来使用。
-
将新的 jjwt-impl .jar 指定为编译依赖项,而不是运行时依赖项。这将使您升级到 JJWT 0.10.0 完全向后兼容,但您需要自行承担风险。 JJWT 将在 jjwt-impl .jar 中做出任何语义版本兼容性保证。然而,在所有其他 JJWT 依赖项中将非常仔细地遵守语义版本控制。
我的猜测是,您的项目团队尚未完成从 JJWT = 0.10 的升级。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)