Java Date返回值不是返回的值

时间:2017-02-22 05:39:58

标签: java maven tycho

我一直在修改tycho_buildtimestamp_svn maven插件以满足我们的需求。一切进展顺利,getTimestamp()例程正在返回预期的Date

然而,一旦回到tycho-packaging-plugin(BuildQualifierMojo.java),我们偶尔会遇到错误的日期。

我已经设法隔离它,现在已经超出了我的理解,减少了代码如下:

private TychoProjectVersion calculateQualifiedVersion() {
    ...
    if (qualifier == null) {
        Date timestamp = getBuildTimestamp();
        System.out.println("Getting Qualifier: " + timestamp.toString());
        qualifier = getQualifier(timestamp);
    }
    ...
}

protected Date getBuildTimestamp() throws MojoExecutionException {
    ...
    Date dt = provider.getTimestamp(session, project, execution);
    System.out.println("Returning: " + dt.toString());
    return dt;
}

结果:

Returning: Wed Feb 24 05:23:48 EST 2016
Getting Qualifier: Tue Feb 21 06:10:00 EST 2017

在300个左右的捆绑包构建中,这可能只影响其中的10-20个,但每次使用相同的捆绑包和相同的日期时,它是一致且可重复的。

编辑:有人提到尝试:

Date result = new Date(dt.getTime());
return result;

这没有帮助。

EDIT2:

我将String.valueOf(System.identityHashCode(x))包含在日志记录语句中。结果显示,对于那些工作正常的bundle,相同的Date对象用于第一个和第二个SysOut调用,但是对于那些失败的,它是一个不同的对象:

Returning: Wed May 25 02:15:35 EDT 2016  (821373005)
Getting Qualifier: Tue Feb 21 06:10:00 EST 2017  (1739646104)

我还能够确定在所有情况下,插件包类型都有效,并且只有功能包失败,但并非所有功能包都失败。

0 个答案:

没有答案