Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Maven中启用Ebean增强?_Java_Maven_Maven 3_Maven Plugin_Ebean - Fatal编程技术网

Java 如何在Maven中启用Ebean增强?

Java 如何在Maven中启用Ebean增强?,java,maven,maven-3,maven-plugin,ebean,Java,Maven,Maven 3,Maven Plugin,Ebean,我已经使用ORM层一段时间了,但我不知道如何启用with Maven中描述的字节码增强功能 我在Avaje.org主页上找到了一个,但它不起作用。GitHub上的应用程序也没有 救命啊 过时的答案 这个答案是针对一个非常古老的EBeans版本的,请忽略它 原创内容 Avaje页面上的示例有一些错误 标记不正确:“process ebean enhancement”不是 Maven生命周期,因此示例配置中的插件不会 正确运行。正确的阶段是“过程类” “classSource”参数不正确。按照配置,

我已经使用ORM层一段时间了,但我不知道如何启用with Maven中描述的字节码增强功能

我在Avaje.org主页上找到了一个,但它不起作用。GitHub上的应用程序也没有


救命啊

过时的答案

这个答案是针对一个非常古老的EBeans版本的,请忽略它

原创内容

Avaje页面上的示例有一些错误

  • 标记不正确:“process ebean enhancement”不是 Maven生命周期,因此示例配置中的插件不会 正确运行。正确的阶段是“过程类”
  • “classSource”参数不正确。按照配置,ebean插件将增强测试代码中的@Entity类,而不是生产代码中的@Entity类。正确的值为“${project.build.outputDirectory}”
  • 确保更新项目的包空间。这是下面示例中的'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>  
    
    
    org.apache.maven.plugins
    maven antrun插件
    增强过程
    进程类
    UTF-8
    跑
    
    这将增强“src/main/java/com/mycompany”及以下文件中的所有@Entity类

    通过对要检查的包进行更严格的限制,可以缩短执行时间


    此外,如果确实需要增强测试类,则可能需要复制此配置。在这种情况下,使用第二个块的“过程测试类”阶段。

    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>
    
    
    org.avaje.ebeanorm
    avaje Ebenorm mavenenhancer
    ${ebean.version}
    主要的
    进程类
    增强
    com.package1.*,com.package2**
    调试=1
    ${project.build.outputDirectory}
    ${project.build.outputDirectory}
    
    使用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>
    
    
    org.eclipse.m2e
    生命周期映射
    1.0.0
    org.avaje.ebeanorm
    avaje Ebenorm mavenenhancer
    [3.3.2,)
    增强
    真的
    真的
    
    JBCP的答案是针对旧的ebean版本(
    org.avaje.ebeanorm
    )。对于(
    io.ebean
    )您需要更改为
    ebean maven插件

    <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>
    
    
    伊奥·埃宾
    

    答案也可以在这里的博客中找到:对我有用…但我必须将执行放在配置中。当我在Eclipse中使用m2e时,编译工作正常,并且运行。但m2e抱怨“插件执行不包括在生命周期配置中:org.avaje.ebeanorm:avaje-ebeanorm-mavenhance。”有人知道如何解决这个问题吗?哇,很好的一个,我似乎无法理解,但是…进入标签内吗?订单重要吗?我忘记了如果订单重要,我就把它放在块下面,在里面。我会更新答案以显示它…嗨,我成功了!订单不重要,可以是在…之前或之后,我的具体问题是目前,我省略了配置。另外,我正在使用org.avaje.ebeanorm版本4.1.8。因此,在您的回答中替换了该版本