我不确定是否有可能...
我有一些设计模式,我想要在我的特殊Maven软件包(#1)中使用-所有这些模式都使用javax.persistence。我不希望此程序包依赖于Hibernate或JPA的任何其他实现。只是让它依赖于JCP定义的JPA API。
我的第二个Maven软件包(#2)将使用第一个Maven软件包,并指定要使用的JPA实现(例如Hibernate)。
现在,如何为这两个软件包定义pom.xml(让#2软件包的JPA实现者为Hibernate)?
最佳答案
JPA定义了一个包javax.persistence
,它包含注释,接口等。该软件包完全独立于提供者。它应包含实现基于JPA的独立于提供程序的服务所需的所有内容。
您唯一需要做的就是在Maven模块#1中将依赖项添加到包含Maven工件的javax.persistence
上。
有几个Maven工件包含此javax.persistence
包。例如:
<dependency>
<!-- JPA 1.0 -->
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<!-- JPA 2.0 -->
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
在您的Maven模块#2中,您需要将对模块#1的依赖关系以及对您要使用的JPA提供程序(例如,Hibernate)的依赖关系放进去。
(如果使用的提供程序,对
javax.persistence
包使用其他依赖项,则需要排除其中之一。)