我可以通过 "Spring Boot Maven Plugin" 使用 "build-info" 制作可执行 jar 吗?

Can I make an executable jar with "build-info" by "Spring Boot Maven Plugin"?

我正在尝试用 "Spring Boot Maven Plugin".

制作一个可执行的 jar 文件

通常,我可以通过在我的 pom.xml 文件中设置 "repackage". 目标来做到这一点。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.2.6.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

而我的构建命令是这样的:

mvn clean package spring-boot:repackage

这可行,但我想在 jar 文件中包含 META-INF/build-info.properties

有了这个文件,我可以在我的 springboot 应用程序中检查构建信息,所以我想拥有它。

要生成“META-INF/build-info.properties”文件,我需要设置"build-info"目标。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.2.6.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
            </goals>
        </execution>
    </executions>
</plugin>

现在我进退两难了,因为

  1. 设置"repackage"目标 -> 可执行文件 jar 没有 "META-INF/build-info.properties"
  2. 设置 "build-info" 目标 -> 一个 不可执行的 jar with "META-INF/build-info.properties"

我想要一个可执行文件 jar with "META-INF/build-info.properties".

我对这个 Maven 过程还很陌生。有没有人可以帮助我?


已解决

我解决了这个问题。问题是 spring-boot-maven-plugin 放错了地方。它在 <pluginManagement> 里面。我把这个插件移到了 <plugins>

就像@Mark Bramnik 回答的那样,我可以在 pom.xml 中设置两个目标设置,并且 mvn clean package 命令就足够了!

您可以 运行 同一插件的多个目标。 所以你可以这样做:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.2.6.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
            </goals>
        </execution>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>