從 jar 中獲取版本號

如果使用 maven-jar-pluginmaven-assembly-plugin 將應用程式打包到 jar 中,獲取當前 pom 版本的簡單方法是在清單中新增一個條目,然後可以從 Java 獲得。

祕訣是將 addDefaultImplementationEntries 標誌設定為 true(而 addDefaultSpecificationEntries 也需要工件 ID)。

jar 外掛配置

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>...</mainClass>
            <addDefaultImplementationEntries>
              true
            </addDefaultImplementationEntries>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

程式集外掛配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>  
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution .../>
    </executions>
</plugin>

addDefaultImplementationEntries 指示 Maven 將以下標題新增到 jar 的 MANIFEST.MF

Implementation-Title: display-version
Implementation-Version: 1.0-SNAPSHOT
Implementation-Vendor-Id: test

現在,你可以在 jar 中的任何位置使用此行程式碼來訪問版本號:

getClass().getPackage().getImplementationVersion()

更多資訊在這裡這裡