2012-08-16 6 views

risposta

7

EBeans ha ora un proprio Maven plugin, ma non riesco a trovare alcuna documentazione in linea, ecco un esempio di come usarlo:

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

Con Eclipse

Se utilizzare Eclipse, si vuole fare in modo che corre il plugin quando necessario, in questo modo:

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

funziona per me .. ma dovevo mettere le esecuzioni nella configurazione. – joshua

+1

Quando uso m2e in Eclipse, la compilazione funziona e viene eseguita. Ma m2e si lamenta "L'esecuzione del plugin non è coperta dalla configurazione del ciclo di vita: org.avaje.ebeanorm: avaje-ebeanorm-mavenenhance." Qualcuno sa come risolvere questo? – area5one

+0

@ area5uno - divertente che hai chiesto, ho appena aggiornato la risposta con esattamente quello che ti serve. – JBCP

2

RISPOSTA OBSOLETO

Questa risposta è per una versione molto vecchia di EBeans, si prega di non tenerne conto.

contenuti originali

L'esempio nella pagina Avaje ha alcuni errori.

  1. Il tag è corretto: 'processo-ebean-enhancement' non è un ciclo di vita Maven , in modo che il plugin nella configurazione di esempio non sarà funzionare correttamente. La fase corretta è "classi di processo".
  2. Il parametro 'classSource' non è corretto. Come configurato, il plug-in ebean migliorerebbe le clin @Entity nel codice di test, piuttosto che il codice di produzione. Il valore corretto è '$ {project.build.outputDirectory}'.
  3. Assicurarsi di aggiornare lo spazio pacchetto per il progetto. Questo è "com.mycompany. **" nell'esempio seguente.

La configurazione completa dovrebbe essere:

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

Ciò permetterà di migliorare tutte le classi @Entity nel "src/main/java/com/mycompany" e al di sotto.

È possibile migliorare i tempi di esecuzione essendo più restrittivi sui pacchetti da esaminare.

Inoltre, potrebbe essere necessario duplicare questa configurazione se è necessario migliorare le classi di test. In tal caso, utilizzare la fase 'proces-test-classes' per un secondo blocco.

+0

risposta disponibile anche in forma di blog qui: http://teamflawless.org/2012/using-maven-to-enable-ebean-enhancement/ – JBCP

1

risposta di JBCP è per vecchia versione ebean (012.). Per newer version (io.ebean) è necessario passare a 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> 

Nota: versione del plugin ebean dovrebbe essere la stessa versione di ebean.

Riferimento:Maven Repo, Github