如何在Ant项目中使用ThreeTen?

时间:2018-02-08 09:20:22

标签: java datetime ant dependency-management threetenbp

我有一些遗留Java 6项目,我想带来一些像Java 8时间库这样的更新。我发现使用ThreeTen backport是可行的。但我不知道如何将它与Ant构建工具一起使用。有什么好的参考或例子吗?

1 个答案:

答案 0 :(得分:2)

概述:

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

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

    修复您的类路径

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

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

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

    <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类

    这是我的计划。请注意,import语句引用org.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,但我认为在其他版本中也是如此。

    来源和进一步阅读

    我使用了the Ant tutorial here,特别是the Using External Libraries section