1

我正在使用 maven 2.2.1 和 maven-pdf-plugin 在“mvn 站点”期间生成我的肯定报告的 PDF 版本。

我想在 PDF 本身中显示报告(即 PDF)生成时间戳,但在我的本地时区中,而不是在 UTC 中。我的本地时区是 UTC +5:30 (IST)。

这是我的 pom.xml 中 build/plugins 部分的片段:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pdf-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <id>pdf</id>
            <phase>site</phase>
            <goals>
                <goal>pdf</goal>
            </goals>
            <configuration>
                <aggregate>true</aggregate>
                <generateTOC>none</generateTOC>
                <outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

这是我的 pdf.xml:

<document xmlns="http://maven.apache.org/DOCUMENT/1.0.1"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/DOCUMENT/1.0.1 http://maven.apache.org/xsd/document-1.0.1.xsd"
          outputName="${artifactId}_surefire-report">

    <meta>
        <title>${artifactId} - Surefire Report</title>
        <author>QA Team</author>
    </meta>

    <toc></toc>

    <cover>
        <coverTitle>TNT:${artifactId}</coverTitle>
        <coverdate>${dateTime}</coverdate>
        <coverSubTitle>Surefire Test Report</coverSubTitle>
        <projectName>${project.name}</projectName>
    </cover>
</document>

PDF 生成良好。问题是我希望coverdate在我当地的时区显示。我已经尝试了Maven PDF 插件页面上提到的一些日期/时间选项,例如:

<coverdate>${dateTime}</coverdate>

<coverdate>${day}/${month}/${year} - ${hour}:${minute}:${second}</coverdate>

但生成的时间戳始终是 UTC。

我也尝试了一些尝试,<coverdate>${dateTime+5:30}</coverdate>但这不起作用。

我尝试在${maven.build.timestamp}其中插入(如果在我的 pom 中使用确实是在我的当地时间),coverdate但是在生成 PDF 时这不会被插值。

如何获取本地时区的时间戳?我什至不需要该<cover></cover>部分;如果我能以某种方式在 PDF 中获取构建时间戳,我可以完全摆脱它。

4

1 回答 1

0

我找到了一个迂回的方法来完成这个。

我将特定时区的时间戳放在我的 pom 的描述标签中,如下所示:

<description>${maven.build.timestamp}</description>

<properties>
    <maven.build.timestamp.format>E dd-MMM-yyyy HH:mm z</maven.build.timestamp.format>
</properties>

现在我可以告诉 pdf 插件将其插入到封面日期中。我的 pdf.xml 有这个:

<cover>
    <coverTitle>My Cover Title</coverTitle>
    <coverdate>${project.description}</coverdate>
...
</cover>

我现在在 PDF 封面上获得了所需的时间戳,在我的本地时间,我想要的格式。

诚然,将时间戳插入 pom 的描述标签并不是很好,但由于我不将描述标签用于其他任何事情,所以我可以忍受。

不幸的是,我无法访问 pdf.xml 中的任意 ${project.X} 属性...只有 ${project.name} 和 ${project.description} 等少数属性似乎有效。

于 2013-01-23T04:57:02.627 回答