Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 配置文件中的插件和没有配置文件的插件有什么区别_Maven_Maven 3_Pom.xml_Maven Profiles_Maven Jar Plugin - Fatal编程技术网

Maven 配置文件中的插件和没有配置文件的插件有什么区别

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> <

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

<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元素中实际引用的插件。孩子们完全有权推翻插件管理的定义