【问题标题】:How to add a goal to release:perform phase of maven-release-plugin如何向发布添加目标:执行 maven-release-plugin 阶段
【发布时间】:2021-07-16 22:59:16
【问题描述】:

我使用的是 kongchen 的 swagger-maven-plugin。此外,我使用 maven-release-plugin。从 swagger-maven-plugin 生成的 swagger.json 不是 repo 的一部分。如果我使用 mvn package 构建应用程序,则会生成 swagger.json 并且是 jar 的一部分。

如果我使用 maven-release-plugin 发布应用程序,则 swagger.json 不是 jar 文件的一部分。我查看了日志,发现 maven-release-plugin 包含三个步骤 - release:clean、release:prepare 和 perform。

release:clean - 清理工作区

release:prepare - 日志显示 swagger-maven-plugin 工作并生成了 swagger.json

release:perform - 日志显示 perform 由三个阶段组成(verify-completed-prepare-phases、checkout-prjoect-from-scm 和 run-perform-goals)。我认为这意味着整个项目被再次签出,因此生成的文件消失了(那是多么棒……)。

如何向 release:perform 添加另一个阶段?

我找到了以下文档https://maven.apache.org/maven-release/maven-release-manager/index.html,知道可以添加额外的准备目标https://maven.apache.org/maven-release/maven-release-plugin/examples/run-goals-before-commit.html

我需要在 release:perform 步骤中添加目标(例如编译或打包)。我怎样才能做到这一点?

谢谢!

         <plugin>
            <groupId>com.github.kongchen</groupId>
            <artifactId>swagger-maven-plugin</artifactId>
            <version>3.1.8</version>
            <configuration>
                <apiSources>
                    <apiSource>
                        <basePath>/.../api</basePath>
                        <locations>
                            <location>not.public</location>
                        </locations>
                        <info>
                            <title>${project.artifactId}</title>
                            <version>${project.version}</version>
                        </info>
                        <outputFormats>json</outputFormats>
                        <swaggerDirectory>${basedir}/src/main/resources/META-INF/path</swaggerDirectory>
                    </apiSource>
                </apiSources>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

【问题讨论】:

  • 你的构建中如何配置 swagger-maven-plugin?
  • 我添加了配置。
  • src 位置中的输出目录通常会产生问题,因为这意味着每次构建都会修改受版本控制的源代码位置...通常使用默认值,例如target/generated-sources...发布期间的签出旨在仅签出之前从标记状态(git tag ...)获得的代码...这将失败,因为构建将更改源位置并且未正确签入...
  • 如果我将 swaggerDirectory 更改为 target/... - 我还能通过 http-requests 提供文件吗?该应用程序是一个使用 swagger-ui 的 quarkus-service。用户界面需要那个招摇文件。
  • 我还想提一下——这不是真正的问题(但应该改变位置,这是真的)。如果我更改为 target/... 它仍然不在 jar 中,因为在 release:perform 期间未执行 swagger-maven-plugin

标签: maven maven-release-plugin


【解决方案1】:

需要设置release:performgoals参数。这包含在“内部构建”中执行的目标。

【讨论】:

  • 您能详细说明一下吗?如何在 pom.xml 中为release:perform 设置goals
  • 你可以例如在 POM 中配置发布插件,并在插件定义的 &lt;configuration&gt; 部分进行设置。
  • 我只试过preparationGoals,看来我是个盲人。现在就试试,谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多