0

我使用 maven-jgit-buildnumber-plugin( github ) 在一种情况下,我在配置文件中定义它:

<profile>
    <id>make-buildnumber</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <build>
        <plugins>
            <plugin>
                <groupId>ru.concerteza.buildnumber</groupId>
                <artifactId>maven-jgit-buildnumber-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-buildnumber</id>
                        <goals>
                            <goal>extract-buildnumber</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

在其他情况下,我将它指向 pom.xml 的构建部分。

在 pluginManagement 部分我尝试使用插件中的变量:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <archive>
            <manifestSections>
                <manifestSection>
                    <name>SCM</name>
                    <manifestEntries>
                        <Branch>${git.branch}</Branch>
                    </manifestEntries>
                </manifestSection>
            </manifestSections>
        </archive>
    </configuration>
</plugin>

在第一种情况下它不起作用,变量为空。为什么???

4

1 回答 1

0

查看链接的 github 文档,插件执行绑定到准备包阶段,您发布的代码段中缺少该阶段。所以可能错过了这个阶段,它没有在 maven-jar-plugin 之前执行并且没有正确设置变量(假设它的默认阶段应该遵循 maven-jar-plugin 的默认阶段)。因此,您可能会得到它为空。

尝试将<phase>prepare-package</phase>元素添加到插件的执行中。

此外,如果在 build/plugins 部分中提到了相同的插件,pluginConfiguration 只会被有效地使用。因此,在 build/plugins 部分,您还应该添加以下内容:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
</plugin>

然后它将获取您在 pluginManagement 部分中指定的配置。

来自 Maven 文档:

pluginManagement : 是一个可以在侧面插件中看到的元素。插件管理以几乎相同的方式包含插件元素,除了不是为这个特定的项目构建配置插件信息,它旨在配置从这个项目继承的项目构建。但是,这仅配置子级的 plugins 元素中实际引用的插件。孩子们有权覆盖 pluginManagement 定义。

于 2015-11-25T21:30:13.217 回答