如何在Maven中启用Ebean Enhancement?
我一直在使用Avaje.org ebean ORM层,但我不明白如何使用Maven启用“Ebean v2.6.0用户指南”中描述的字节码增强function。
我在Avaje.org主页上找到了一个配置示例 ,但它不起作用。 GitHub上的演示Maven样板也没有。
救命!
EBeans现在有自己的Maven插件,但我在网上找不到任何文档,所以这里有一个如何使用它的例子:
org.avaje.ebeanorm avaje-ebeanorm-mavenenhancer ${ebean.version} main process-classes enhance com.package1.**,com.package2.** debug=1 ${project.build.outputDirectory} ${project.build.outputDirectory}
用Eclipse
如果您使用Eclipse,则需要确保它在需要时运行插件,如下所示:
org.eclipse.m2e lifecycle-mapping 1.0.0 org.avaje.ebeanorm avaje-ebeanorm-mavenenhancer [3.3.2,) enhance true true
已废除的答案
这个答案适用于非常旧版本的EBeans,请忽略它。
原创内容
Avaje页面上的示例有一些错误。
- 标记不正确:’process-ebean-enhancement’不是Maven生命周期,因此示例配置中的插件将无法正确运行。 正确的阶段是“流程类”。
- ‘classSource’参数不正确。 按照配置,ebean插件会增强测试代码中的@Entity条款,而不是生产代码。 正确的值是’$ {project.build.outputDirectory}’。
- 确保更新项目的包空间。 这是以下示例中的“com.mycompany。**”。
完整的配置应该是:
org.apache.maven.plugins maven-antrun-plugin process-ebean-enhancement process-classes UTF-8 run
这将增强“src / main / java / com / mycompany”及其下的所有@Entity类。
您可以通过对要检查的包进行更严格的限制来缩短执行时间。
此外,如果确实需要增强测试类,则可能需要复制此配置。 在这种情况下,对第二个块使用’proces-test-classes’阶段。
JBCP的答案是针对旧的ebean版本( org.avaje.ebeanorm
)。 对于较新的版本 ( io.ebean
),您需要更改为ebean-maven-plugin
。
io.ebean ebean-maven-plugin ${ebean.version} main process-classes enhance com.package1.**,com.package2.** debug=1 ${project.build.outputDirectory} ${project.build.outputDirectory}
注意: ebean插件版本应与ebean版本相同。
参考: Maven Repo , Github