Maven 时间戳错误
Maven Timestamp Error
当我使用 Maven 的时间戳 属性 时,我无法创建文件夹。
我已经分享了 pom 详细信息和生成的错误消息,但是我可以手动创建文件夹。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}/Execution_(${timestamp})</outputFolder>
</properties>
当我使用上面的代码时,在maven的pom文件中。
作为构建的一部分,虽然报告了以下错误:
[TestNG] Reporter org.uncommons.reportng.JUnitXMLReporter@3d8c7aca failed
org.uncommons.reportng.ReportNGException: Failed generating JUnit XML report.
at org.uncommons.reportng.JUnitXMLReporter.generateReport(JUnitXMLReporter.java:83)
at org.testng.TestNG.generateReports(TestNG.java:1115)
at org.testng.TestNG.run(TestNG.java:1074)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:293)
at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:84)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:91)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.io.FileNotFoundException: C:\AutomationTestReports\Demo\Execution_(2016-04-11T12:13:35Z)\xml\Script.Demo.AppTest_results.xml (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
at java.io.FileWriter.<init>(FileWriter.java:90)
at org.uncommons.reportng.AbstractReporter.generateFile(AbstractReporter.java:10
但是,如果我删除时间戳,文件夹创建工作正常。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}</outputFolder>
</properties>
问题: 如何在 Maven 中为创建的文件添加时间戳?
在你的情况下,主要错误如下:
Caused by: ... C:\AutomationTestReports\Demo\Execution_(2016-04-11T12:13:35Z)\...
在 Windows 中,您不能拥有包含 :
字符的文件夹。我怀疑您是否可以手动创建这样的文件夹。
要有一个有效的文件夹名称,它仍然可以满足您的要求,您还应该自定义另一个 Maven 属性:maven.build.timestamp.format
.
来自官方Maven Introduction to POM:
The format of the build timestamp can be customized by declaring the property maven.build.timestamp.format
其默认值设置为 yyyy-MM-dd'T'HH:mm:ss'Z'
,这不是有效的 Windows 文件夹名称模式。
因此,您可以拥有以下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd'T'HH-mm-ss'Z'</maven.build.timestamp.format>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}/Execution_(${timestamp})</outputFolder>
</properties>
注意:以上配置以-
替换:
字符为例,将生成有效的Windows文件夹名称。
为了更好地处理 Maven 中的时区,您可以使用 build-helper-maven-plugin
and its timestamp-property
目标。
添加到 pom 的简单配置是:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>build.time</name>
<pattern>yyyy-MM-dd'T'HH-mm-ss</pattern>
<timeZone>Etc/GMT-2</timeZone>
</configuration>
</execution>
</executions>
</plugin>
注意 timeZone
元素:在这里您应该指定您的时区,检查 here 以获得可用有效值的完整列表。
然后,在您的 pom 中,您可以使用上面指定的 build.time
属性,就像 Maven 属性 (${build.time}
).
当我使用 Maven 的时间戳 属性 时,我无法创建文件夹。 我已经分享了 pom 详细信息和生成的错误消息,但是我可以手动创建文件夹。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}/Execution_(${timestamp})</outputFolder>
</properties>
当我使用上面的代码时,在maven的pom文件中。
作为构建的一部分,虽然报告了以下错误:
[TestNG] Reporter org.uncommons.reportng.JUnitXMLReporter@3d8c7aca failed
org.uncommons.reportng.ReportNGException: Failed generating JUnit XML report.
at org.uncommons.reportng.JUnitXMLReporter.generateReport(JUnitXMLReporter.java:83)
at org.testng.TestNG.generateReports(TestNG.java:1115)
at org.testng.TestNG.run(TestNG.java:1074)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:293)
at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:84)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:91)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.io.FileNotFoundException: C:\AutomationTestReports\Demo\Execution_(2016-04-11T12:13:35Z)\xml\Script.Demo.AppTest_results.xml (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
at java.io.FileWriter.<init>(FileWriter.java:90)
at org.uncommons.reportng.AbstractReporter.generateFile(AbstractReporter.java:10
但是,如果我删除时间戳,文件夹创建工作正常。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}</outputFolder>
</properties>
问题: 如何在 Maven 中为创建的文件添加时间戳?
在你的情况下,主要错误如下:
Caused by: ... C:\AutomationTestReports\Demo\Execution_(2016-04-11T12:13:35Z)\...
在 Windows 中,您不能拥有包含 :
字符的文件夹。我怀疑您是否可以手动创建这样的文件夹。
要有一个有效的文件夹名称,它仍然可以满足您的要求,您还应该自定义另一个 Maven 属性:maven.build.timestamp.format
.
来自官方Maven Introduction to POM:
The format of the build timestamp can be customized by declaring the property
maven.build.timestamp.format
其默认值设置为 yyyy-MM-dd'T'HH:mm:ss'Z'
,这不是有效的 Windows 文件夹名称模式。
因此,您可以拥有以下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd'T'HH-mm-ss'Z'</maven.build.timestamp.format>
<timestamp>${maven.build.timestamp}</timestamp>
<outputFolder>C:/AutomationTestReports/${project.name}/Execution_(${timestamp})</outputFolder>
</properties>
注意:以上配置以-
替换:
字符为例,将生成有效的Windows文件夹名称。
为了更好地处理 Maven 中的时区,您可以使用 build-helper-maven-plugin
and its timestamp-property
目标。
添加到 pom 的简单配置是:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>build.time</name>
<pattern>yyyy-MM-dd'T'HH-mm-ss</pattern>
<timeZone>Etc/GMT-2</timeZone>
</configuration>
</execution>
</executions>
</plugin>
注意 timeZone
元素:在这里您应该指定您的时区,检查 here 以获得可用有效值的完整列表。
然后,在您的 pom 中,您可以使用上面指定的 build.time
属性,就像 Maven 属性 (${build.time}
).