java - 有没有办法只针对特定配置文件运行自定义 Maven clean?

标签 java maven jpa build-process pom.xml

因此,我有一个 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>

这是生成元模型的配置文件。

<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 能够以正常配置执行(不删除那些生成的类)。 有没有办法拥有两种方法来清理项目并仅为生成配置文件运行自定义方法?

最佳答案

我使用@Tunaki的建议成功解决了这个问题。所以谢谢。这是我的解决方案。

在插件部分,我保留了 maven-clean-plugin 不变。

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

然后,在配置文件部分,我定义了生成配置文件以在新的 src-gen/main/java 文件夹中生成源。我需要首先删除生成的源,因此我为此配置文件配置了 clean 插件来删除 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 所说使用 build-helper-maven-plugin 添加 src-gen/main/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>

最后,我只需配置 maven-compiler-plugin 即可编译 src-gen/main/java 文件夹中的 .java 文件。

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

关于java - 有没有办法只针对特定配置文件运行自定义 Maven clean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36304980/

相关文章:

hibernate - JPA/Hibernate Join 和 Fetch 单列

java - 如何在java中进行碰撞检测?

java - Eclipse - 项目包含错误但未发现

java - @Controller 、 @RestController 和 @Component 在 Spring boot 多模块 maven 项目的子包中不起作用

java - Maven下简单编译失败,用javac成功

java - Apache Maven 安装问题

java - persistence.xml 中的 DRY

java - 在 Freemarker 中解释

java - WebDriverException : No command or response codec has been defined. Appium WebDriver 无法找到 UIButton

java - mappedBy 指的是类名还是表名?