Maven 配置文件中的插件和没有配置文件的插件有什么区别
我使用maven-jgit-buildnumber-plugin() 在一种情况下,我在概要文件中定义了它:Maven 配置文件中的插件和没有配置文件的插件有什么区别,maven,maven-3,pom.xml,maven-profiles,maven-jar-plugin,Maven,Maven 3,Pom.xml,Maven Profiles,Maven Jar Plugin,我使用maven-jgit-buildnumber-plugin() 在一种情况下,我在概要文件中定义了它: <profile> <id>make-buildnumber</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <
<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>
制作建筑编号
真的
ru.concerteza.buildnumber
maven jgit buildnumber插件
制作建筑编号
提取buildnumber
在另一种情况下,我将它指向pom.xml的build部分
在pluginManagement部分,我尝试使用plugin中的变量:
<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>
maven jar插件
2.6
供应链管理
${git.branch}
在第一种情况下,它不工作,变量为null。为什么???查看链接的github文档,插件的执行被限制在准备包阶段,这在您发布的代码片段中缺失。因此,可能缺少这个阶段,它没有在maven jar插件之前执行,也没有正确设置变量(假设它的默认阶段应该在maven jar插件的默认阶段之后)。因此,您可能会在null处得到它 尝试将
prepare package
元素添加到插件的执行中
此外,如果在build/plugins部分中提到相同的插件,那么pluginConfiguration就是有效使用的。因此,在构建/插件部分,您还应添加以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
org.apache.maven.plugins
maven jar插件
然后它将获取您在pluginManagement部分中指定的配置
来自Maven文档:
插件管理:是一个可以在插件旁边看到的元素。插件管理包含插件元素的方式与此基本相同,不同之处在于它不是为这个特定的项目构建配置插件信息,而是配置从这个项目构建继承的项目构建。但是,这仅配置在子元素的plugins元素中实际引用的插件。孩子们完全有权推翻插件管理的定义