配置文件中的插件与没有

时间:2015-11-25 10:05:06

标签: maven maven-3 pom.xml maven-profiles maven-jar-plugin

我使用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>

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

1 个答案:

答案 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元素中实际引用的插件。孩子们有权覆盖插件管理定义。