如何启用Ebean增强在Maven的?(How do I enable Ebean Enhancem

2019-07-31 01:41发布

我一直在使用Avaje.org ebean ORM层了一段时间,但我不知道如何使中所描述的字节码增强功能“Ebean V2.6.0用户指南”使用Maven。

我发现了一个配置实例的Avaje.org主页,但它不工作。 无论是做了演示Maven的样板 GitHub上。

救命!

Answer 1:

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>


Answer 2:

OBSOLETE ANSWER

这个答案是一个很老的版本EBeans的,请忽略它。

原创内容

在Avaje页面上的例子有一些错误。

  1. 标签是不正确:“过程ebean增强”不是一个Maven生命周期,因此在本例中配置该插件将无法正常运行。 正确的相位是“过程类”。
  2. 该“classSource”参数不正确。 按照配置,ebean插件将提高@Entity clases在您的测试代码,而不是你的产品代码。 正确的值是 '$ {project.build.outputDirectory}'。
  3. 请务必更新包空间为您的项目。 这是在下面的例子“com.mycompany。**”。

完整的配置应该是:

        <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>  

这将提高所有@Entity类中的“SRC /主/ JAVA / COM / myCompany中”及以下。

您可以通过更严格的包装检验提高执行时间。

此外,您可能需要复制此配置,如果你确实需要提高测试类。 在这种情况下,使用“PROCES测试类”相对于一个第二块。



Answer 3:

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版本。

参考: Maven的回购 , Github上



文章来源: How do I enable Ebean Enhancement in Maven?