5

Avaje.org ebean ORMレイヤーをしばらく使用していますが、Mavenで「Ebeanv2.6.0ユーザーガイド」に記載されているバイトコード拡張機能を有効にする方法がわかりません。

Avaje.orgホームページで設定例を見つけましたが、機能しません。GitHubのデモMavenボイラープレートも同様です。

ヘルプ!

4

3 に答える 3

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>
于 2013-04-02T20:26:34.767 に答える
2

廃止された回答

この回答は、非常に古いバージョンのEBeanに関するものです。無視してください。

オリジナルコンテンツ

Avajeページの例にはいくつかの間違いがあります。

  1. タグが正しくありません。「process-ebean-enhancement」はMavenライフサイクルではないため、設定例のプラグインは正しく実行されません。正しいフェーズは「プロセスクラス」です。
  2. 'classSource'パラメーターが正しくありません。構成されているように、ebeanプラグインは、本番コードではなく、テストコードの@Entityクラスを拡張します。正しい値は「${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>  

これにより、「src / main / java / com/mycompany」以下のすべての@Entityクラスが拡張されます。

検査するパッケージをより制限することで、実行時間を改善できます。

また、テストクラスを拡張する必要がある場合は、この構成を複製する必要があります。その場合、2番目のブロックに「proces-test-classes」フェーズを使用します。

于 2012-08-16T22:46:08.240 に答える
2

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 RepoGithub

于 2018-02-03T02:43:49.463 に答える