Замена build.xml с Build.java - использование Java и библиотек Ant как система сборки

Здесь функция, которая может быть полезна, так как возвращает дату -4 ч, учитывая, что это также может изменить дату, месяц и, в конечном итоге, год. Опция .searchBackward является важной частью:)

public static func correctSecondComponent(date: Date, calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian))->Date {

    let hour = calendar.component(.hour, from: date)

    let e = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.hour, value: -4, to: date, options:.searchBackwards)!

    return e
}
9
задан Dean Schulze 9 June 2009 в 21:19
поделиться

6 ответов

Наша система сборки в первую очередь основана на том, что вы описываете, и действительно работает очень хорошо. Мы используем задачи Ant (особенно задачи манипулирования файлами) из пользовательских программ Java, которые собирают приложение, используя автоматическое обнаружение компоновки модулей приложения на основе соглашений.

Вам может потребоваться некоторый клей Ant XML, для выполнения таких вещей, как компиляция самих сценариев сборки и фактического вызова java для выполнения сборки, но это второстепенно.

Java не только более читабельна, чем Ant, особенно когда речь идет об условном выполнении, но и значительно быстрее. Наша сборка на основе Ant раньше занимала около минуты для сборки EAR, теперь версия на основе java занимает около 5 секунд.

7
ответ дан 4 December 2019 в 15:25
поделиться

Учитывая, что Java скомпилирована, это своего рода проблема курицы и яйца. Вам необходимо создать свой Build.java для сборки вашего проекта.

Ant в настоящее время поддерживает встроенные сценарии с использованием BeanShell, Groovy и ряда других, которые действительно могут помочь уменьшить потребность в этом.

РЕДАКТИРОВАТЬ: В ответ на сообщение Дина. несколько комментариев, если ваша сборка состоит строго из длинного цикла, то вам действительно не нужен скрипт сборки ant. Однако сила сценария сборки заключается в том, что он гарантирует, что зависимости выполняются только один раз, при этом допускаются множественные точки входа, что далеко не тривиально, если вы создадите собственный.

Если вам не нравится формат XML, Вы не одиноки, с вами согласен автор ANT. Тем не мение, Если ваш взгляд на процесс сборки - это то, что может быть запущено из вашей IDE в качестве единственной точки запуска, я бы сказал, что ваши потребности сборки довольно просты.

EDIT2: Я поддержал ответ skaffman, потому что он напрямую связан с вопросом. В комментариях мы, кажется, согласны с тем, что этот подход подходит для процедурной сборки, но не будет работать для декларативной, и что вам понадобится хотя бы немного ANT xml, чтобы начать работу с вашим Build.java, чтобы избежать курицы и проблема с яйцом. Похоже, это решает суть дела.

и что вам понадобится хотя бы немного ANT xml, чтобы начать работу с Build.java, чтобы избежать проблемы с курицей и яйцом. Похоже, это решает суть дела.

и что вам понадобится хотя бы немного ANT xml, чтобы начать работу с Build.java, чтобы избежать проблемы с курицей и яйцом. Похоже, это решает суть дела.

2
ответ дан 4 December 2019 в 15:25
поделиться

Хотя я полагаю, что это возможно, вам, вероятно, было бы лучше использовать сценарии оболочки, чем писать полную программу на Java для простой автоматизации сборки.

Вы бы упустили один из ключевых моментов использует для ant, которые являются легко определяемыми наборами файлов и легко читаемыми в свойствах.

Я застрял на ant, поскольку Groovy слишком близок к написанию всего приложения, чтобы просто создать ваше настоящее приложение. Слишком сложно для неприятностей.

0
ответ дан 4 December 2019 в 15:25
поделиться

У вас была прекрасная идея. У Клиффа Клика была похожая идея: http://blogs.azulsystems.com/cliff/2008/01/i-hate-makefile.html

Если вы пройдете через это, я советую вам не усложнять насколько это возможно, чтобы ваша система сборки не нуждалась в самой [нетривиальной] системе сборки.

2
ответ дан 4 December 2019 в 15:25
поделиться

Хотя использовать задачи Ant внутри программ Java довольно просто, на вашем месте я бы, вероятно, придерживался файлов сборки Ant. Если вы занимаетесь отличной разработкой, если Eclipse не делает то, что вам нужно, возможно, вам нужно поискать в другом месте (IntelliJ, NetBeans и т. Д.).

0
ответ дан 4 December 2019 в 15:25
поделиться

] Кажется, здесь упущен важный момент.

Ant написан на Java, и я ищу лучший способ использовать задачи Ant (API в библиотеках Ant), чем через xml. На всю жизнь я не понимаю, как использование xml для вызова Java может быть лучше или проще, чем использование Java для вызова Java.

Единственным препятствием является то, что подход xml документирован, тогда как подход Java не документирован, поэтому мне придется загрузить и ознакомиться с кодом Ant.

Я воздержался от публикации этого вопроса в течение нескольких недель. потому что я был уверен, что кто-то делал это раньше и что мой google-foo просто нужно улучшить. Использование Java для вызова API-интерфейсов Ant вместо xml кажется настолько очевидным, что я все еще удивляюсь, что для Ant не было разработано параллельного подхода на основе Java, а также подхода xml.

Просто потому, что это так. однако очевидное не означает, что кто-то делал это раньше.

Я воздерживался от публикации этого вопроса пару недель, потому что был уверен, что кто-то делал это раньше и что мой google-foo просто нужно улучшить. Использование Java для вызова API-интерфейсов Ant вместо xml кажется настолько очевидным, что я все еще удивляюсь, что для Ant не было разработано параллельного подхода на основе Java, а также подхода xml.

Просто потому, что это так. однако очевидное не означает, что кто-то делал это раньше.

Я воздерживался от публикации этого вопроса пару недель, потому что был уверен, что кто-то делал это раньше и что мой google-foo просто нужно улучшить. Использование Java для вызова API-интерфейсов Ant вместо xml кажется настолько очевидным, что я все еще удивляюсь, что для Ant не было разработано параллельного подхода на основе Java, а также подхода xml.

Просто потому, что это так. однако очевидное не означает, что кто-то делал это раньше.

2
ответ дан 4 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: