使库使用jpa注释而不依赖于任何实现

时间:2015-07-28 20:13:59

标签: java maven jpa maven-3

我正在构建一个库,用于扫描课程并检查其字段是否为OneToManyManyToOne注释。我目前添加了eclipselink 3.6作为我的模块的依赖,像这样

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.6.0</version>
</dependency>

但我不想让我的lib依赖于eclipselink,我希望它能够与任何JPA实现一起使用。我该怎么做?

1 个答案:

答案 0 :(得分:3)

不幸的是,没有标准包只提供注释/接口(例如,在servlet规范上)。每个ORM都有自己的包,但全部遵循jpa标准。您可以做的是将依赖项声明为optional

对于Eclipselink

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>2.1.0</version>
    <optional>true</optional>
</dependency>

您可能需要依赖eclipselink进行测试,因此您只能为测试标记原始依赖项...

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.6.0</version>
  <scope>test</scope>
</dependency>