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



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

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

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

不幸的是,没有只提供注释/接口的标准包(例如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,因此您可以将原始依赖项标记为test…

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

相关内容

最新更新