如何在蚂蚁工程中使用ThreeTen?

How to use ThreeTen in Ant project?

提问人:hoss 提问时间:2/8/2018 最后编辑:David Conradhoss 更新时间:2/10/2018 访问量:280

问:

我有一些遗留的 Java 6 项目,我想对它们进行一些更新,例如 Java 8 时间库。我发现使用 ThreeTen 向后移植是可能的。但是我不知道如何将它与 Ant 构建工具一起使用。请问有什么好的参考资料或例子吗?

java datetime 蚂蚁 依赖管理 threetenbp

评论

0赞 Anonymous 2/8/2018
对于某些上下文,这是 SOAP Web 服务解析 Date from String 返回 d-1 值的后续问题。hoss 和我在网上搜索,但没有找到指南或示例。我不敢相信这以前没有做过几次。
2赞 martin clayton 2/8/2018
您不能直接从 Maven 中央 repo1.maven.org/maven2/org/threeten/threetenbp/1.3.6 中捞出 jar 并将其添加到您的构建文件中吗?

答:

2赞 Anonymous 2/10/2018 #1

概述:

  1. 将 ThreeTen 向后移植 JAR 文件下载到 Ant 项目的 lib 文件夹中
  2. 确保 lib 文件夹中的 JAR 文件位于编译和运行的类路径上(可能已经是这种情况)。
  3. 在 Java 源文件中,添加 import from with subpackages,并在代码中使用导入的类。org.threeten.bp

下载 JAR

http://www.threeten.org/threetenbp/ 上,选择顶部的 Releases -> Download 以访问 Maven 存储库。在第一个搜索结果中(目前为 threetenbp 1.3.6,2017 年 7 月 10 日),在“下载”列中,单击 jar。将文件(在本例中为 threetenbp-1.3.6.jar)下载到 Ant 项目的 lib 文件夹或将其移动到 lib 文件夹。或者你有你的外部JARs。如果你没有这样的地方,请为它创建一个名为 lib 的文件夹。

修复类路径

如果以前没有程序使用的外部 JAR 文件形式的任何外部依赖项,则可能需要为这些依赖项准备文件。在我的我添加了build.xmlbuild.xml

<property name="lib.dir"     value="lib"/>

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

这将定义 lib 文件夹的名称和类路径以供以后使用。请注意,我指定带有子文件夹的文件夹中的所有文件都在类路径上,因此将来您可以将 JAR 放入以将它们添加到您的项目中。然后,我将类路径添加到我的编译目标和运行目标中:.jarlib

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>

<target name="run" depends="jar">
    <java fork="true" classname="${main-class}">
        <classpath>
            <path refid="classpath"/>
            <path location="${jar.dir}/${ant.project.name}.jar"/>
        </classpath>
    </java>
</target>

我们需要修复这两个目标,因为编译和运行都需要外部 JAR。

在 Java 程序中使用 java.time 类

这是我的程序。请注意,这些语句引用 。importorg.threeten.bp

package ovv.ant.threetenbp;

import java.util.Date;

import org.threeten.bp.Instant;
import org.threeten.bp.DateTimeUtils;

public class AntAndThreeTenBackportDemo {

    public static void main(String... commandLineArguments) {
        Instant once = Instant.parse("1939-11-19T16:30:00Z");
        Date oldfashionedDateObject = DateTimeUtils.toDate(once);
        System.out.println("As Date: " + oldfashionedDateObject);
    }

}

当我从 Ant 运行时(在我的计算机上,欧洲/哥本哈根时区),我得到:

run:
     [java] As Date: Sun Nov 19 17:30:00 CET 1939

我使用了 Ant 1.9.7,但我认为在其他版本中也是一样的。

来源和延伸阅读

我在这里使用了 Ant 教程,特别是使用外部库部分