首页 > 解决方案 > 在 Maven 阶段进程资源期间运行代码

问题描述

我有一个 Spring 项目,我们在其中使用 Swagger 生成代码。但是,生成的代码存在问题(缺少导入,代码无法编译)。这是一个已知问题。理想情况下,我会解决这个问题,但我没有时间学习该项目的代码库。事实上,由于项目的性质,我可以提交生成的代码并手动修改它。但是,为了将来,我想学会更干净地做到这一点。

我的解决方案是通过 Maven 钩子修改生成的代码。我认为 maven 阶段process-resources是一个很好的地方,因为 swagger 生成了代码,它还没有被编译。我尝试使用以下插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>fix-openapi-generated-classes</id>
            <phase>process-resources</phase>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>com.company.package.hooks.FixOpenApiGeneratedClasses</mainClass>
    </configuration>
</plugin>

但是,我收到错误消息,告诉我它没有找到我要调用的类。我通过测试不同的阶段验证了路径是正确的,而且确实如此。我认为这里的问题是该类尚不存在,因为它尚未编译。但是我不能等待编译阶段,因为我需要在编译之前修改源代码。

我应该如何在那个阶段使该课程可用?该类作为独立类工作,不需要任何其他类。

标签: javamaven

解决方案


推荐阅读