在另一个项目中复制 Hibernate 实体(如 POJO)的最干净方法



我有多模块Maven项目:

  1. 带有注释实体的 JPA 模块(休眠实现)。

  2. Rest-Service 模块 - 依赖于模块 1。 和终结点使用模块 1 中的实体序列化 JSON。

  3. Rest-Client 模块:该库基于 retrofit2(此 jar 库也用于 Java-EE Web 项目和 Android),并且对于反序列化 JSON 模型,它需要依赖于模块 1。但是这里的实体需要是简单的POJO(没有JPA注释)

我不希望模块 3 依赖于模块 1 并在 RestClient 中包含所有 Hibernate jar(它不需要它)。

我不想只在模块 3 中复制实体并手动删除注释。很难在两个地方更改下一个实体。

我正在尝试使用 Maven 依赖插件仅复制实体.. 但不清楚是否可以使用此插件删除注释? 这是最干净的方法吗?

经过多次研究,我为我的 RestService 添加了大摇大摆的支持:

https://github.com/zhouhao/swagger-spring-boot-jersey

Rest Client 模块由 Java 的 swagger-codegen-maven-plugin 和 Android Gradle 项目的 swagger-codegen-gradle-plugin 生成。 这是我对 gradle 插件的配置:

swagger {
inputSpec = 'http://petstore.swagger.io/v2/swagger.json'
outputDir = "${rootDir}/swagger-client"
lang = 'java'
additionalProperties = [
'groupId'           : 'com.orgname',
'artifactId'        : 'swagger-java-client',
'artifactVersion'   : '1.0.0',
'invokerPackage'    : 'com.orgname.client.retrofit2',
'modelPackage'      : 'com.orgname.client.retrofit2.model',
'apiPackage'        : 'com.orgname.client.retrofit2.api',
'library'           : 'retrofit2',
'useRxJava2'        : 'true',
'useGzipFeature'    : 'true',
'serializableModel' : 'true',
'dateLibrary'       : 'java7',
'templateDir'       : "src/main/resources/Java/libraries/retrofit2"
]
}

模型是从 RestService 生成的,不需要依赖 Hibernate 实体模型,我认为这是最干净的方法,只需最少的人力。

最新更新