2016-04-11 6 views
0

mavenのtimestampプロパティを使用しているときにフォルダを作成できません。 生成されたPOMの詳細とエラーメッセージを共有しましたが、手動でフォルダを作成できます。Mavenタイムスタンプエラー

<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 [email protected] 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の中に作成されたファイルにタイムスタンプを追加する方法は?

+0

このような手ブレンドフォルダの目的は何ですか? – khmarbaise

答えて

1

主なエラーは以下の通りですあなたの場合:Windowsの中

Caused by: ... C:\AutomationTestReports\Demo\Execution_(2016-04-11T12:13:35Z)\... 

、あなたは:文字を含むフォルダを持つことができません。私はあなたが手動でこのようなフォルダを作成することはできません。

要件を満たしている有効なフォルダ名を使用するには、別のMavenプロパティもカスタマイズする必要があります(maven.build.timestamp.format)。公式Maven Introduction to POMから

:ビルドのタイムスタンプの形式が有効なWindowsフォルダ名ではありませんmaven.build.timestamp.format

そのデフォルト値はyyyy-MM-dd'T'HH:mm:ss'Z'に設定されているプロパティを、宣言することによってカスタマイズすることができ

パターン。したがって

は、次のかもしれない:

<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とその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})のようです。

+0

@Rajitsrajanそれはタイムゾーンの問題です。その後、タイムゾーンをより良く処理するためのソリューションを追加します –

関連する問題