无法运行 git-commit-id-plugin 一次并在子项目中使用

问题描述 投票:0回答:1

在我的项目的根目录中是pom.xml和.git。我的 maven pom.xml 看起来像:

<profile>
      <id>git</id>
      <activation>
        <file>
          <exists>.git</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>io.github.git-commit-id</groupId>
            <artifactId>git-commit-id-maven-plugin</artifactId>
            <version>7.0.0</version>
            <executions>
              <execution>
                <id>get-the-git-infos</id>
                <goals>
                  <goal>revision</goal>
                </goals>
                <phase>validate</phase>
              </execution>
            </executions>
            <configuration>
              <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

从控制台输出中,我可以看到它以这种方式运行一次,但是尝试在清单中设置它的子 jar 最终会得到:“${git.commit.id.abbrev}”逐字。

虽然我可以每次为每个项目运行它,但我想运行一次。

这可能吗?

git pom.xml maven-3
1个回答
0
投票

使用配置文件是错误的方法。该插件将处理所有需要的情况。另外,设置

dotGitDirectory
是不必要的,也没有用,这是插件的默认设置。这违反了配置范式的约定。

首先通过

pluginManagement
定义插件的版本和基本配置,如下所示:

    <plugin>
      <groupId>io.github.git-commit-id</groupId>
      <artifactId>git-commit-id-maven-plugin</artifactId>
      <version>7.0.0</version>
      <configuration>
        <runOnlyOnce>true</runOnlyOnce>
        <generateGitPropertiesFile>true</generateGitPropertiesFile>
        <commitIdGenerationMode>full</commitIdGenerationMode>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>

如果需要,某些配置部分可能会更改

generateGitPropertiesFile
也许?

runOnlyOnce
部分是多模块构建中的重要部分,这意味着插件本身将仅执行一次以读取Git信息,并且仅在根级别(其中
.git
目录
can be found). If you don't set that to
true`它将尝试读取每个子项中不必要的 git 信息(可以工作,但浪费时间;仅在您可能使用 git 子模块/子树的情况下可能需要)。

接下来重要的事情是将插件绑定到生命周期。这必须在

plugins
部分(不在插件管理中)完成,如下所示:

<build>
  <plugins>
    ..
    <plugin>
        <groupId>io.github.git-commit-id</groupId>
        <artifactId>git-commit-id-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>revision</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugin>
    ...
  </plugins>
</build>

插件本身默认绑定到

initialize
阶段,因此不需要自己定义阶段。

© www.soinside.com 2019 - 2024. All rights reserved.