我使用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>
在第一种情况下,它不起作用,变量为空。为什么???
答案 0 :(得分:0)
查看链接的github文档,插件执行受限于prepare-package阶段,在您发布的代码段代码中缺少该阶段。所以可能错过了阶段,它没有在maven-jar-plugin之前执行而没有正确设置变量(假设它的默认阶段应该遵循maven-jar-plugin的默认阶段)。因此,您可以将其设置为null。
尝试将<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元素中实际引用的插件。孩子们有权覆盖插件管理定义。