2016-03-30 74 views
0

Bu yüzden, JPA varlıklarım (ClassName.java) için StaticMetaModel (ClassName_.java) sınıflarımı oluşturan bir maven profilim var.Sadece belirli bir profil için özel bir maven temizlemek için herhangi bir yolu var mı?

Daha sonra, mven'i her temizlediğimde, oluşturulan sınıfları silmek için maven-temiz-eklentimi tanımladım.

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <filesets> 
      <fileset> 
       <directory>${basedir}/src/main/java</directory> 
       <includes> 
        <include>**/*_.java</include> 
       </includes> 
      </fileset> 
     <filesets> 
    </configuration> 
</plugin> 

Bu

metamodel oluşturur profilidir. amaçlandığı gibi

<plugin> 
    <groupId>org.bsc.maven</groupId> 
    <artifactId>maven-processor-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>process</goal> 
      </goals> 
      <phase>generate-sources</phase> 
      <configuration> 
       <outputDirectory>src/main/java/</outputDirectory> 
       <processors> 
        <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor> 
       </processors> 
      </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-jpamodelgen</artifactId> 
     <version>${hibernate.version}</version> 
     </dependency> 
    </dependencies> 
</plugin> 

Her şey çalışır, ancak ben diğer profilleri çalıştırmak istediğinizde (bu oluşturulan sınıfları silmeden) Normal yapılandırma ile gerçekleştirmek için temiz maven için istiyorum. Projeyi temizlemek ve yalnızca üretim profili için özel olanı çalıştırmak için iki yönteme sahip olmanın bir yolu var mı?

+1

maven profilleri denediniz mi? böylece "mvn clean -Pprofile1" –

+0

@Neil Stockton Evet, bu sınıfları oluşturmak için bir profilim var. Mvn clean install -PgenerateMetaProfile çalıştırdığımda ClassName_.java dosyaları silinir ve yeniden oluşturulur. Ama ben mvn temiz çalıştır -PotherProfile çalıştırdığımda bu sınıfları silmek istemiyorum. –

+2

'src/main /' haline getirme genel olarak yanlış yoldur ... 'target' klasörüne kod üretilmesi gerekir ... Bu kadar garip yapılara ihtiyaç duymadan ... – khmarbaise

cevap

0

Bunu, @Tunaki'nin sugestionunu kullanarak çözmeyi başardım. Yani teşekkür ederim. İşte benim çözümüm.

Eklentiler bölümünde, maven temiz eklentisini değiştirmeden bıraktım.

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.5</version> 
</plugin> 

sonra, profiller bölümünde, yeni bir src-gen/ana/java klasöründe, kaynakları oluşturmak için benim nesil profili tanımladı. Oluşturulan kaynakları önce silmem gerekiyordu, bu yüzden bu profil için temiz eklentiyi src-gen klasörünü silmek üzere yapılandırdım. Bir kaynağı oluşturmak-yardımcı-maven-eklentisi @Tunaki bahsedilen olarak kullanılarak klasörü olarak

<profile> 
     <id>hibernate-processor</id> 
     <properties> 
      <environment.id>hibernate-processor</environment.id> 
     </properties> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-clean-plugin</artifactId> 
        <version>2.5</version> 
        <configuration> 
         <filesets> 
          <fileset> 
           <directory>src-gen</directory> 
           <includes> 
            <include>**/*</include> 
           </includes> 
           <followSymlinks>false</followSymlinks> 
          </fileset> 
         </filesets> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.bsc.maven</groupId> 
        <artifactId>maven-processor-plugin</artifactId> 
        <executions> 
         <execution> 
          <goals> 
           <goal>process</goal> 
          </goals> 
          <phase>generate-sources</phase> 
          <configuration> 
           <outputDirectory>src-gen/main/java</outputDirectory> 
           <processors> 
            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor> 
           </processors> 
          </configuration> 
         </execution> 
        </executions> 
        <dependencies> 
         <dependency> 
          <groupId>org.hibernate</groupId> 
          <artifactId>hibernate-jpamodelgen</artifactId> 
          <version>${hibernate.version}</version> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

Bundan sonra, src-gen/ana/Java ilave edildi.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
        <source>src-gen/main/java/</source> 
       </sources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Son olarak, sadece ayrıca src-gen/ana/java klasörüne .java dosyalarını derlemek için maven-derleyici-eklentisi yapılandırmak zorunda kaldı.

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
     <configuration> 
      <includes> 
       <include>src/main/java/**/*.java</include> 
       <include>src-gen/main/java/**/*.java</include> 
      </includes> 
     </configuration> 
    </configuration> 
</plugin>