Java 使cxf codegen插件生成的类具有持久性功能

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注释,但我希望在尽可能保持客户机通用性的同时,摆脱这一阶段。使用客户机的项目应该能够安全地假设类具有持久性 处理这一问题的最佳方法可能是在

我有一个Maven jar项目,它使用cxf codegen插件创建一个SOAP客户机

在另一个使用该客户机的Maven项目中,只需使用JPA(当前使用OpenJPA)持久化数据类实例(一些soap响应)——由cxf codegen插件生成

在编译/增强和安装客户机jar之前,在每次生成客户机源代码之后,使用一些配置材料(例如)可能会向数据类添加@Entity注释,但我希望在尽可能保持客户机通用性的同时,摆脱这一阶段。使用客户机的项目应该能够安全地假设类具有持久性

处理这一问题的最佳方法可能是在客户端项目设置中使用一些技巧(目前使用openjpa maven插件来增强数据类),以检测所需的类,并以某种方式使它们具有持久性功能并增强这些功能


我宁愿跳过维护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可能会更时尚,但这对我来说已经足够好了