Java 使cxf codegen插件生成的类具有持久性功能
我有一个Maven jar项目,它使用cxf codegen插件创建一个SOAP客户机 在另一个使用该客户机的Maven项目中,只需使用JPA(当前使用OpenJPA)持久化数据类实例(一些soap响应)——由cxf codegen插件生成 在编译/增强和安装客户机jar之前,在每次生成客户机源代码之后,使用一些配置材料(例如)可能会向数据类添加@Entity注释,但我希望在尽可能保持客户机通用性的同时,摆脱这一阶段。使用客户机的项目应该能够安全地假设类具有持久性 处理这一问题的最佳方法可能是在客户端项目设置中使用一些技巧(目前使用openjpa maven插件来增强数据类),以检测所需的类,并以某种方式使它们具有持久性功能并增强这些功能Java 使cxf codegen插件生成的类具有持久性功能,java,maven,jpa,soap,cxf-codegen-plugin,Java,Maven,Jpa,Soap,Cxf Codegen Plugin,我有一个Maven jar项目,它使用cxf codegen插件创建一个SOAP客户机 在另一个使用该客户机的Maven项目中,只需使用JPA(当前使用OpenJPA)持久化数据类实例(一些soap响应)——由cxf codegen插件生成 在编译/增强和安装客户机jar之前,在每次生成客户机源代码之后,使用一些配置材料(例如)可能会向数据类添加@Entity注释,但我希望在尽可能保持客户机通用性的同时,摆脱这一阶段。使用客户机的项目应该能够安全地假设类具有持久性 处理这一问题的最佳方法可能是在
我宁愿跳过维护beans.xml之类的内容,如果可能的话,坚持使用注释,但这也是一种选择。如果有人需要相同的注释,我会描述我当前使用的方法。它基于使用
com.google.code.maven replacer插件添加注释、字段,如id
和imports
简而言之:我在我的pom.xml
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- dir where cxf-codegen-plugin has generated model classes -->
<basedir>src/generated/java/org/example/service</basedir>
<includes>
<include>NamedEntity.java</include>
</includes>
<regex>false</regex>
<replacements>
<replacement>
<token>package org.example.service.service;</token>
<value>package org.example.service.service;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.GeneratedValue;
import javax.persistence.InheritanceType;
</value>
</replacement>
<replacement>
<token>public class</token>
<value>@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class</value>
</replacement>
<replacement>
<token>protected String name;
</token>
<value>protected String name;
@Id
@GeneratedValue
@Getter
private Long id;
</value>
</replacement>
</replacements>
</configuration>
</plugin>
com.google.code.maven-replacer-plugin
替代者
1.5.3
过程源
代替
src/generated/java/org/example/service
NamedEntity.java
假的
包org.example.service.service;
包org.example.service.service;
导入javax.persistence.Id;
导入javax.persistence.Entity;
导入javax.persistence.heritation;
导入javax.persistence.GeneratedValue;
导入javax.persistence.InheritanceType;
公共课
@实体
@继承(策略=继承类型。每个类的表)
公共课
受保护的字符串名称;
受保护的字符串名称;
@身份证
@生成值
@吸气剂
私人长id;
为了使代码保持良好的格式,
s中需要所有缩进和换行。使用regexps可能会更时尚,但这对我来说已经足够好了