我一直在使用Avaje.org ebean ORM 层,但我不明白如何使用 Maven 启用“Ebean v2.6.0 用户指南”中描述的字节码增强功能。
我在 Avaje.org 主页上找到了一个配置示例,但它不起作用。GitHub 上的演示 Maven 样板也没有。
帮助!
我一直在使用Avaje.org ebean ORM 层,但我不明白如何使用 Maven 启用“Ebean v2.6.0 用户指南”中描述的字节码增强功能。
我在 Avaje.org 主页上找到了一个配置示例,但它不起作用。GitHub 上的演示 Maven 样板也没有。
帮助!
EBeans 现在有自己的 Maven 插件,但是我在网上找不到任何文档,所以这里是一个如何使用它的示例:
<plugin>
<groupId>org.avaje.ebeanorm</groupId>
<artifactId>avaje-ebeanorm-mavenenhancer</artifactId>
<version>${ebean.version}</version>
<executions>
<execution>
<id>main</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
<configuration>
<packages>com.package1.**,com.package2.**</packages>
<transformArgs>debug=1</transformArgs>
<classSource>${project.build.outputDirectory}</classSource>
<classDestination>${project.build.outputDirectory}</classDestination>
</configuration>
</execution>
</executions>
</plugin>
使用日食
如果您使用 Eclipse,您需要确保它在需要时运行插件,如下所示:
<build>
<plugins>
<!-- plugins here -->
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.avaje.ebeanorm</groupId>
<artifactId>avaje-ebeanorm-mavenenhancer</artifactId>
<versionRange>[3.3.2,)</versionRange>
<goals>
<goal>enhance</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
过时的答案
此答案适用于非常旧版本的 EBeans,请忽略它。
原创内容
Avaje 页面上的示例有一些错误。
完整的配置应该是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>process-ebean-enhancement</id>
<phase>process-classes</phase>
<configuration>
<tasks>
<property name="compile_classpath" refid="maven.compile.classpath" />
<echo
message="Ebean enhancing test classes debug level -----------------------------------" />
<echo message="Classpath: ${compile_classpath}" />
<taskdef name="ebeanEnhance" classname="com.avaje.ebean.enhance.ant.AntEnhanceTask"
classpath="${compile_classpath}" />
<ebeanEnhance classSource="${project.build.outputDirectory}"
packages="com.mycompany.**" transformArgs="debug=1" />
</tasks>
<encoding>UTF-8</encoding>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
这将增强“src/main/java/com/mycompany”及以下所有@Entity 类。
您可以通过对要检查的包进行更多限制来缩短执行时间。
此外,如果您确实需要增强测试类,则可能需要复制此配置。在这种情况下,对第二个块使用“proces-test-classes”阶段。
JBCP 的答案是针对旧的 ebean 版本 ( org.avaje.ebeanorm
)。对于较新的版本( io.ebean
),您需要更改为ebean-maven-plugin
.
<plugin>
<groupId>io.ebean</groupId>
<artifactId>ebean-maven-plugin</artifactId>
<version>${ebean.version}</version>
<executions>
<execution>
<id>main</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
<configuration>
<packages>com.package1.**,com.package2.**</packages>
<transformArgs>debug=1</transformArgs>
<classSource>${project.build.outputDirectory}</classSource>
<classDestination>${project.build.outputDirectory}</classDestination>
</configuration>
</execution>
</executions>
</plugin>
注意: ebean 插件版本应与 ebean 版本相同。