我不确定是否有可能...

我有一些设计模式,我想要在我的特殊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包使用其他依赖项,则需要排除其中之一。)

07-24 14:12