我有多模块Maven项目:
带有注释实体的JPA模块(Hibernate实现)。
Rest-Service模块 - 依赖于模块1.和端点使用模块1中的实体序列化JSON。
Rest-Client模块:该库基于retrofit2(此jar库也用于Java-EE Web项目和Android),并且用于反序列化JSON模型,它需要依赖于模块1也是。但是这里的实体需要是简单的POJO(没有JPA注释)
我不希望模块3依赖于模块1并在RestClient中包含所有Hibernate jar(它不需要它)。
我不想仅在模块3中复制实体并手动删除注释..很难在两个地方更改实体。
我正在尝试使用Maven Dependency plugin复制实体..但不清楚是否可以使用此插件删除注释?这是最干净的方式吗?
答案 0 :(得分:0)
经过多次研究后,我向我的RestService添加了极大的支持:
https://github.com/zhouhao/swagger-spring-boot-jersey
生成Rest Client模块,其中swagger-codegen-maven-plugin用于Java,swagger-codegen-gradle-plugin用于Android Gradle项目。 这是我对gradle-plugin的配置:
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 Entities模型,我认为这是最简洁的方法,只需要最少的人力。