Cookbook:如何将构建时间添加到 JAR 清单?

概括

这个秘籍描述了如何通过调用Apache Ant任务将构建时间添加到 JAR 清单中。

先决条件插件

以下是使用的插件列表:

插入 版本
antrun 1.1
jar 2.2

样本生成清单

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: vsiveton
Build-Jdk: 1.5.0_12
Build-Time: 2008-01-18 06:53:13

食谱

配置 MANIFEST.MF

要生成构建时间并将其添加到 Jar Manifest 中,我们使用MANIFEST.MF位于src/main/resources/META-INF目录中的 ,其中包含要插入的构建时间值,即

Build-Time: ${build.time}

配置 POM

由于 <filtering> 元素,来自 Maven的值 ${build.time}MANIFEST.MF将被过滤。该值取自文件${basedir}/target/filter.properties,由 <filter> 元素列出,即

    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <filters>
      <filter>${basedir}/target/filter.properties</filter>
    </filters>

配置 Maven Antrun 插件

filter.properties文件将由 Antrun 插件生成。我们使用两个核心 Ant 任务,<tstamp><echo>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-resources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <!-- Safety -->
                <mkdir dir="${project.build.directory}"/>

                <tstamp>
                  <format property="last.updated" pattern="yyyy-MM-dd hh:mm:ss"/>
                </tstamp>
                <echo file="${basedir}/target/filter.properties" message="build.time=${last.updated}"/>
              </tasks>
            </configuration>
          </execution>
        </executions>
      </plugin>

配置 Maven Jar 插件

最后一个配置是设置defaultManifestFiletrue启用它。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <useDefaultManifestFile>true</useDefaultManifestFile>
  </configuration>
</plugin>

运行 Maven

只需调用 Maven 生成包:

mvn package

其他提示

您可以将 Jar 插件配置调整到 War 插件中。

资源