LINUX.ORG.RU

Гуру Java-девелопмента, какое ваше мнение о развитии Apache Ant и его общем состоянии

 , ,


0

0

интро

Заюзал тут плотно ант в одном из своих проектов. И на первый взгляд ничего в нем не менялось года так 4.

Все так же надо подключать ant-contrib для «полноты ощущений». Когда плотно занимался им прошлого разу - читал гдето что собираються «смерджить» contrib в апстрим. Но воз и ныне там..

Словил баг когда солюшен для задачи

select the latest modified file from a directory

построенный на базе ant-contrib работает, а на встроенных средствах глючит.

...
ash.replace:

ash.create-target-file:
     [echo] e:/home/vv/work/own/js/uos/pss/build/output/pss.concat.ajs
     [echo] b:/home/vv/work/own/js/uos/pss/build/output/pss.concat.ajs
     [copy] Copying 1 file to /home/vv/work/own/js/uos/pss/build/output

ash.encoding:

ash.create-target-file:
     [echo] e:/home/vv/work/own/js/uos/pss/build/output/pss.replace.ajs
     [echo] b:/home/vv/work/own/js/uos/pss/build/output/pss.replace.ajs
     [copy] Copying 1 file to /home/vv/work/own/js/uos/pss/build/output

ash.dev:

ash.create-target-file:
     [echo] e:/home/vv/work/own/js/uos/pss/build/output/pss.encoding.ajs
     [echo] b:/home/vv/work/own/js/uos/pss/build/output/pss.replace.ajs
     [copy] Copying 1 file to /home/vv/work/own/js/uos/pss/build/output
...

Полез в багзиллу и ужаснулся: 676 bugs. Чем они там занимаются?

А может он уже того, и есть что-то новое, модное и более распостранённое?

Мне собственно нужен инструмент для подрихтовывания Javascript-сырцов и готовки из них конечного продукта

Перемещено mono из talks

UPD: source file https://gist.github.com/ZuBB/2db1b68756033084a778

★★★★★

Последнее исправление: ZuBB (всего исправлений: 1)

1. GNU make, например, чем не угодил?
2. BSD make вообще достиг совершенства и нирваны.
3. 676 багрепортов — не так много. Ты почитай их, может, о том, что касается твоей работы, ничего нет.

shimon ★★★★★
()
Ответ на: комментарий от shimon

make

а они кросплатформенны? они могуг сравняться с антом по фичастости? или с ними нужно тащить bash, coreutils, moreutils, grep, wget итд?

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 2)
Ответ на: комментарий от Absurd

ну он еще более джавишная тулза, а мне тут «швейцарский нож» нужен (последнюю строчку в ОП читал?)

ZuBB ★★★★★
() автор топика

наверное, все матерые ынтерпрайзники эти баги наизусть знают, и всем насрать)

казуалы переползли на мавен, хипстеры на айви и градл

буйные хипстеры — на скалу и сбт, которое умеет айви и мавен

продолжайте наблюдения

А может он уже того, и есть что-то новое

в мире ява-ынтерпрайза бывает что-то новое?

stevejobs ★★★★☆
()

Ну вообще принято считать, что Ant уже не в моде. Его критикуют за подход в виде явного описания нужных действий, что может превратить более-менее сложные сценарии в write-only-талмуды. Как в Perl: написал что-то, а через минуту не можешь разобраться в этом.

Maven, который пришёл на замену Ant'у во многих случаях, напротив весь из себя декларативен. Казалось бы, благодать, но если для сборки проекта потребуется что-то нестандартное, далеко отходящее от соглашений, то пиши пропало. Как в Java: шаг влево, шаг вправо — расстрел.

Gradle, потихоньку набирающий популярность, якобы сочетает преимущества обоих вышеупомянутых систем. Там отказались от XML, вместо него DSL, базирующийся на Groovy. Если придерживаться соглашений, то объем build-скрипта стремится чуть ли не к нолю, а если надо что-то свое замутить, то к вашим услугам полноценный язык программирования. Впрочем, на мой взгляд, эта штука ещё сыровата.

CARS ★★★★
()
Ответ на: комментарий от shimon

GNU make
Гуру Java-девелопмента

сразу видно гуру Java-девелопмента :3

stevejobs ★★★★☆
()
Ответ на: комментарий от ZuBB

ну он еще более джавишная тулза, а мне тут «швейцарский нож» нужен

Некоторые оригиналы мавеном прожекты на C# собирали тока нативный дотнетовский NuGet не вышел.

Absurd ★★★
()
Ответ на: комментарий от ZuBB

а мне тут «швейцарский нож» нужен

в него можно свои модули писать

а еще из него можно вызывать ант-таски чтобы допилить напильником

а еще из него можно юзать груви чтобы мелкой шкурочкой

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

градл

посмотрю, спс

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от CARS

самый класный ответ. спс

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от CARS

если для сборки проекта потребуется что-то нестандартное, далеко отходящее от соглашений, то пиши пропало.

Пиши не «пропало», а пиши плагин.

anonymous
()

А не можешь написать, что за подрихтовка? В конце концов, если сборка не завязана на Java, то всегда можно ковырнуть питон, он будет куда лаконичнее xml-ей. Взять, да и прицениться к тому же Buildout-у.

anonymous
()
Ответ на: комментарий от zz

посмотрел. вроде может большинство того что мне нужно. остальное можна налисапедить ибо JS.

Большое «за»: для тестирования мне будет нужен node.js, а тут им можна еще одного «зайца» подстрелить. Единственное «но»: для минимизаци пользуюсь Closure Compiler`ом. Избавиться от джавы походу не удастся или все-таки есть адекватные замены?

еще один вопрос, возможно немного не в тему, но пользуясь моментом спрошу

для проекта написал

  • реализацию l10n (полностью клиентскую, без зависимостей на другие либы). Потом понял что написал еще один велосипед. Нагуглил тред на SO. Был ли опыт пользования чего-либо из упомянутого там?
  • простенький профайлер. Опять же велосипед. Пытался гуглить, но безуспешно. Есть ли какие уже извесные и обкатанные «standalone, library agnostic» реализации?
ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от anonymous

А не можешь написать, что за подрихтовка?

могу. ща добавлю ссылку на гист в ОП

у меня уже есть в проекте джава (ибо Closure Compiler), нода (ибо jshint). еще один рантайм пихать не хочется..

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

ща добавлю ссылку на гист в ОП

есть

ZuBB ★★★★★
() автор топика

Ant не «модный», но актуальный. Для чего-то сложного можно пісать свой таск с внятным API. Для простого - уже всё есть. Плюс кроссплатформенность.

dzidzitop ★★
()
Ответ на: комментарий от CARS

Казалось бы, благодать, но если для сборки проекта потребуется что-то нестандартное, далеко отходящее от соглашений, то пиши пропало

Я это называю «мавен-болезнью». Когда люди не умеют писать к нему плагины и что-то нестандартное заменяют на комбинацию 10 плагинов и скотча. Или пишут ант-таски на 500 строчек

vertexua ★★★★★
()
Ответ на: комментарий от ZuBB

uglify нормально жмет, есть для grunt`а обвязка. По остальному не скажу, кроме того что видел пару раз в дикой природе messageformat. И да, клиентский javascript профайлится в хроме/фаерфоксе (console.profile() console.profileEnd())

zz ★★★★
()
Ответ на: комментарий от zz

uglify нормально жмет, есть для grunt`а обвязка

спс. посмотрю его обязательно

messageformat

смотрел его. показался слишком сложным. потом еще раз погляжу

клиентский javascript профайлится в хроме/фаерфоксе

клиентский

у меня не клиентский. с позводения напомню

дано: платформа — офтоп программа с «встроенной» JS VM. VM используется от установленного в системе Internet Explorer. Но и это еще не все. Судя по всему я даже не «получаю» все возможности этой VM ибо alert(typeof JSON) говорит undefined (вместо алерта у меня другой костыль, алерт тоже андефайнед)

отсюда

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от dzidzitop

это не нода. идейно похоже на ноду но не оно. чтото среднее между IE-compatible JS + ActiveX, WShell и HTA

ZuBB ★★★★★
() автор топика

щас я понимаю, почему джависты дорого стОят
жаба остановилась в своем развитии несколько лет назад, и инструменты устаревают
в силу давности гугл уже не может найти внятную документацию

kto_tama ★★★★★
()

Gradle. /thread

anonymous
()
Ответ на: комментарий от dzidzitop

есть вопрос если позволите

код ты уже видел. ошибку в ОП надеюсь тоже. Решил пока? не переходить на чтолибо другое ибо код достаточно хороший (на мой взгляд) кроме 2х моментов: той ошибки и одного селектора. Так вот об ошибке. Я думал что простой заменой одного кода на другой я добьюсь стабильной работы. Но не тут то было. Ошибка осталась такой же, на том же месте, но стала проявляться на более позднем этапе. Причем теперь код на базе встроенных тулз работает, а с использованием ant-contrib работает неправильно. Теперь я начинаю думать что ошибка гдето у меня а не в ant-core/ant-contrib. Задача у меня все та же

select the latest modified file from a directory

что можеш посоветовать?

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от ZuBB

В общем думаю что проблема с

select the latest modified file from a directory

полностью локализирована. Как я понял фишка в том что ант не сразу выполняет/flush’ит IO операции. По ходу он их выполняет перед завершением билда.

Один и той самый код

в скрипте

        <exec executable="sh" outputproperty="output.file">                     
            <arg value="-c"/>                                                   
            <arg value="ls ${OUTPUT.DIR} | ls -1cr | tail -n 1"/>               
        </exec>                                                                 

и в консоли

ls -cr1 build/output/ | tail -n 1

дает разный результат..

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)

Использование XML с течением времени сильно замедляет развитие проектов из-за малопригодного к быстрому пониманию человеком семантики описываемого им контента. Как можно быстрее минимизируй применение XML в своих проектах.

iZEN ★★★★★
()

подсумирую по анту

Ant не «модный», но актуальный. Для чего-то сложного можно пісать свой таск с внятным API. Для простого - уже всё есть. Плюс кроссплатформенность.

наверное, все матерые ынтерпрайзники эти баги наизусть знают, и всем насрать)

по моей проблеме: (наверное) нужно было использовать grunt (если не взлетит - тогда смотреть на Gradle)

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

в том что ант не сразу выполняет/flush’ит IO операции.

можно лі поглядеть на оба результата? Какие файлы имеют разный modification timestamp?

dzidzitop ★★
()
Ответ на: комментарий от ZuBB

Поздравляю.

Если бы был известен конкретный файл который обрабатывается «с глюком» то можно было б посмотреть сорцы того таска который пишет в файл - проблему явно просто распознать и решить.

dzidzitop ★★
()
Ответ на: комментарий от dzidzitop

я понимаю (и помню примерно как все было). мне лень. чесно..

ZuBB ★★★★★
() автор топика

для джавы есть maven, все остальное - грех.

x0r ★★★★★
()
Ответ на: комментарий от stevejobs

да да, я както поднимал систему сборки из ~30 либ на ant+ivy

когда оно завелось, стало ясно что поддержать это никто кроме меня не может, а мне второй раз уже не хочется 8)

Deleted
()

Можешь попробовать SCons, очень удобно писать сборочные скрипты на питоне.

Moncruist
()
Ответ на: комментарий от dzidzitop

дабы не плодить еще одну тему спрошу здесь

возможно у Вас или у zhuravlik есть идеи как сделать чтобы следующий код заработал? Версия анта важна?

        <concat destfile="${new.file}">
            <files>
                <selector unless="${NOT_SET}">
                    <filename name="core/src/third party/es5-shim/es5-shim.js"/>
                </selector>
            </files>
        </concat>

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.