2016-03-30 1 views
0

私はJPAエンティティ(ClassName.java)のStaticMetaModel(ClassName_.java)クラスを生成するmavenプロファイルを持っています。特定のプロファイルのためだけにカスタムMavenクリーンを実行する方法はありますか?

次に、mvn cleanを実行するたびに、生成されたクラスを削除するようmaven-clean-pluginを定義しました。

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

これはMetaModelを生成するプロファイルです。意図したとおりに

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

すべてが動作しますが、私は他のプロファイルを実行する場合(これらの生成されたクラスを削除せずに)通常の構成で実行するクリーンMavenのためにしたいと思います。 プロジェクトをクリーニングし、世代プロファイルのためだけにカスタムを実行する2つの方法はありますか?

+1

あなたはmavenプロファイルを試しましたか? "mvn clean -Pprofile1"を実行することができます –

+0

@Neil Stocktonはい、私はそれらのクラスを生成するためのプロファイルを持っています。 mvn clean install -PgenerateMetaProfileを実行すると、ClassName_.javaファイルが削除され、再作成されます。しかし、mvn clean install -PotherProfileを実行すると、それらのクラスを削除したくありません。 –

+2

'src/main /'への生成は一般的に間違った方法です...生成コードは 'target'フォルダに入れなければなりません...あなたはそのような奇妙な構造を必要としません... – khmarbaise

答えて

0

@Tunakiのsugestionを使って、私はそれを解決することができました。ありがとう。ここに私の解決策があります。

プラグインのセクションでは、maven-clean-pluginを変更せずに残しました。

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

次に、プロファイルセクションで、新しいsrc-gen/main/javaフォルダにソースを生成するために自分の世代プロファイルを定義しました。最初に生成されたソースを削除する必要があったので、このプロファイル用のクリーンプラグインを設定してsrc-genフォルダを削除しました。その後

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

ソースは@Tunakiが言ったようにビルドヘルパーのmaven-プラグインを使用してフォルダとして、私はSRC-GEN /メイン/ javaの追加。

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

最後に、私はまた、SRC-GEN /メイン/ javaのフォルダ内の.javaファイルをコンパイルするのmaven-コンパイラプラグインを設定する必要がありました。

<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> 
関連する問題