【发布时间】:2016-07-18 05:30:06
【问题描述】:
所以,我有一个 Maven 配置文件,它为我的 JPA 实体 (ClassName.java) 生成我的 StaticMetaModel (ClassName_.java) 类。
然后,我定义了我的 maven-clean-plugin 以在每次运行 mvn clean 时删除那些生成的类。
<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 clean 以正常配置执行(不删除那些生成的类)。 有没有什么方法可以有两种方法来清理项目并运行自定义的一种,只为生成配置文件?
【问题讨论】:
-
你试过 maven 配置文件吗?所以你可以做“mvn clean -Pprofile1”
-
@Neil Stockton 是的,我有一个用于生成这些类的配置文件。当我运行 mvn clean install -PgenerateMetaProfile 时,ClassName_.java 文件被删除并重新创建。但是当我运行 mvn clean install -PotherProfile 我不想删除这些类。
-
生成到
src/main/通常是错误的方式...生成代码应该在target文件夹中进行...比你不需要这么奇怪的结构... -
您的问题是您在
src/main/java下生成源。 不要那样做。曾经。期间。 如果你不这样做,你现在不会有这个问题。在src/main/java下进行清理毫无意义,并且违反了所有的良好做法。 -
@Tunaki,我明白这一点,但该配置文件仅用于开发目的。一旦投入生产,它将被完全删除。使用此方法的全部目的是因为有超过 150 个实体,我不想在每次更改某些内容时创建/修改 StaticMetaModel。 MetaModel 正在使用 CriteriaAPI 的其他类中使用,因此我需要它们存在于那里。
标签: java maven jpa build-process pom.xml