2012-08-16 10 views

Odpowiedz

7

EBeans ma teraz swój własny Maven Plugin, ale nie mogę znaleźć żadnej dokumentacji online, więc tutaj jest przykładem, jak go używać:

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

z Eclipse

Jeśli używać Eclipse, będziemy chcieli, aby upewnić się, że działa plugin, gdy są potrzebne, tak:

<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

działa dla mnie .. ale musiałem umieścić egzekucje w konfiguracji. – joshua

+1

Kiedy używam m2e w Eclipse, kompilacja działa i działa. Ale m2e narzeka "Wykonanie wtyczki nie jest objęte konfiguracją cyklu życia: org.avaje.ebeanorm: avaje-ebeanorm-mavenenhance." Ktoś wie, jak to naprawić? – area5one

+0

@ area5one - zabawne, że zapytał, I właśnie zaktualizował odpowiedź dokładnie to, czego potrzebujesz. – JBCP

2

OBSOLETE ODPOWIEDŹ

Ta odpowiedź jest w bardzo starej wersji EBeans, zignoruj ​​go.

Oryginalna zawartość

Przykład na stronie Avaje ma pewne błędy.

  1. Znacznik jest błędna: „Proces-ebean-enhancement” nie jest Maven cyklu, więc plugin w konfiguracji przykładzie nie funkcjonować poprawnie. Prawidłowa faza to "klasy procesowe".
  2. Parametr "classSource" jest niepoprawny. Zgodnie z konfiguracją wtyczka ebean poprawiłaby klauzule @Entity w kodzie testowym, a nie w kodzie produkcyjnym. Prawidłową wartością jest "$ {project.build.outputDirectory}".
  3. Należy zaktualizować przestrzeń pakietu dla projektu. To jest "com.jpg. **" w poniższym przykładzie.

Kompletny config powinno być:

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

To zwiększy wszystkich klas @Entity w "src/main/java/com/moja_firma" i poniżej.

Możesz poprawić czas wykonania, ponieważ jest on bardziej restrykcyjny na opakowaniach do zbadania.

Konieczne może być również skopiowanie tej konfiguracji, jeśli konieczne jest ulepszenie klas testowych. W takim przypadku użyj fazy "fazy testów procesowych" dla drugiego bloku.

+0

Answer również dostępny w formie blogu tutaj: http://teamflawless.org/2012/using-maven-to-enable-ebean-enhancement/ – JBCP

1

odpowiedź JBCP jest do starej wersji ebean (org.avaje.ebeanorm). Dla newer version (io.ebean) należy zmienić na 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> 

Uwaga: Wersja wtyczki ebean powinna być taka sama jak wersji ebean.

referencyjny:Maven Repo, Github