我有多模块Maven项目:
-
带有注释实体的 JPA 模块(休眠实现)。
-
Rest-Service 模块 - 依赖于模块 1。 和终结点使用模块 1 中的实体序列化 JSON。
-
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 实体模型,我认为这是最干净的方法,只需最少的人力。