我一直在使用Avaje.org ebean ORM层,但我不明白如何使用Maven启用"Ebean v2.6.0 User Guide"中描述的字节码增强功能。
我在Avaje.org主页上找到了configuration example,但它不起作用。 GitHub上的demo Maven boilerplate也没有。
帮助!
答案 0 :(得分:7)
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
如果您使用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>
答案 1 :(得分:2)
取消回答
这个答案适用于非常旧版本的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'阶段。
答案 2 :(得分:2)
JBCP的答案是针对旧的ebean版本(org.avaje.ebeanorm
)。对于newer version(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版本相同。
参考: Maven Repo,Github