[英]Not able to exclude javax.persistence from javaee-api maven dependency
[英]Differentiation between javax.persistence, javax.persistence-api and javaee-api
我对javax.persistence,javax.persistence-api和javaee-api的差异和内容感到困惑。 javaee-api可能包含更多内容,但我只对JPA内容感兴趣(如果存在于javaee-api中)。 从抽象的角度来看,有JPA作为规范,还有一些JPA的实现,例如eclipselink。 因此,如果配置中存在两个依赖项,则很容易理解:一个用于规范内容,一个用于实现。 但似乎这有点复杂,所以我有以下问题:
我假设“ javax.persistence-api”包含接口之类的内容,因此javax.persistence-api包含JPA的编程内容声明,但未实现该规范。 因此,如果我在2.2版中将javax.persistence-api设置为依赖关系(maven或gradle),则我定义必须使用JPA 2.2(实现必须支持),并且如果我在2.1版中将javax.persistence-api设置为依赖关系,我定义必须使用/支持JPA 2.1。 那正确吗 ?
“javax.persistence”依赖项的目的/内容是什么(例如在2.2.1版本的mvn repo中可下载)?
7.0版中的javaee-api是否已经包含javax.persistence-api,如果是,那么哪个版本? 2.1? 我如何或在哪里可以找到此信息?
如果我使用最新的实现,例如EclipseLink 2.7.4(在2019年第一季度)表示支持JPA 2.2,那么对2.1之类的旧JPA版本是否有向后兼容性?
任何澄清我都会很高兴。
API依赖项用于compile
项目。 实现既可以provided
一个运行时(例如Java EE应用服务器)或应用程序可以被构建以包括落实。 如果你不熟悉Maven的范围,我建议你阅读此 。
javax.persistence-api
不包括实现。 编辑:我想你可以在JPA 2.2运行时运行JPA 2.1应用程序。 但是,向后兼容性也应该意味着没有行为差异 。 新版本具有更多功能,这些功能可能默认情况下处于启用状态。 毕竟,Java EE就是“约定优于配置”。 所以它还取决于你对“向后兼容性”的定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.