Как использовать ThreeTen в проекте Ant?

У меня есть устаревший проект Java 6, и я хочу внести в них некоторые обновления, такие как библиотека времени Java 8. Я обнаружил, что это возможно с помощью бэкпорта ThreeTen. Но я не знаю, как использовать его с инструментом сборки Ant. Любые хорошие ссылки или примеры, пожалуйста?


person hoss    schedule 08.02.2018    source источник
comment
В некотором контексте это дополнительный вопрос к Веб-служба SOAP анализирует дату из строки, возвращая значение d-1. Хосс и я искали в Интернете, но не нашли руководства или примера. Я не могу поверить, что это не было сделано несколько раз раньше.   -  person Ole V.V.    schedule 08.02.2018
comment
Не могли бы вы просто выловить банку из центрального repo1.maven Maven. org/maven2/org/threeten/threetenbp/1.3.6 и добавить его в файл сборки?   -  person martin clayton    schedule 08.02.2018


Ответы (1)


Обзор:

  1. Загрузите JAR-файл ThreeTen Backport в папку lib вашего проекта Ant.
  2. Убедитесь, что файлы JAR в вашей папке lib находятся в пути к классам как для компиляции, так и для запуска (возможно, это уже так).
  3. В исходные файлы Java добавьте импорт из org.threeten.bp с подпакетами и используйте импортированные классы в своем коде.

Скачать банку

На странице http://www.threeten.org/threetenbp/ вверху выберите Релизы -> Скачайте, чтобы попасть в репозиторий Maven. В первом результате поиска (в настоящее время threetenbp 1.3.6 от 10 июля 2017 г.) в столбце «Загрузка» нажмите jar. Загрузите файл (в данном случае threetenbp-1.3.6.jar) или переместите его в папку lib вашего проекта Ant. Или где у вас есть внешние 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.time в вашей программе Java

Вот моя программа. Обратите внимание, что операторы 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, но думаю, что и в других версиях то же самое.

Источник и дальнейшее чтение

Я использовал учебник Ant здесь, в частности раздел Использование внешних библиотек.

person Ole V.V.    schedule 09.02.2018