![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
batigoal |
|
||||||||||||||||||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
В течение долгого времени мне хватало для сборки приложения волшебной кнопочки «Build» с зеленой стрелочкой. Однако, по мере роста задач, она перестала удовлетворять моим нуждам, и я обратил свое внимание на утилиту ant. И вот что из этого получилось...
Цели Имеем следующую ситуацию. Приложение крутится на сервере Sun под управлением OC Solaris. Для внесения изменений в какой-либо из классов необходимо произвести следующие действия:
Разумеется, выполнять все эти действия вручную – занятие утомительное. Очень хочется выполнять всю последовательность одним кликом или одной командой. Тогда я вспомнил про Ant. Покопавшись в информации по нему, я с удивлением узнал, что он может выполнить и эти операции, и множество других заданий. Hello, world Начнем с начала. Ant представляет из себя утилиту, предназначенную для построения готовой build-версии приложения. Работа утилиты определяется XML-документом, состоящим из отдельных заданий (tasks). Обычно этот файл называется build.xml. Пример простейшего файла build.xml:
project – это корневой тег. Он обязательно должен присутствовать в файле build.xml. Он содержит энное количество тегов <target>, каждый из которых определяет одно задание. Каждое задание должно иметь уникальное (в пределах файла) имя. И, наконец, delete – конкретное действие, выполняющееся при запуске задания. В данном случае это удаление каталога build, находящегося в текущем каталоге. Запуск Запустить ant с этим файлом можно командой ant -buildfile build.xml clean Соответственно, в данном случае опция –buildfile указывает, что после нее будет идти имя xml-файла. clean – имя запускаемого задания. Кроме того, существует опция –lib. Она нужна, чтобы подключать к антовскому classpath’у дополнительные библиотеки и классы. Второй шаг Расширим наш файл дополнительными параметрами:
Тег project. name – имя проекта. default – имя того задания, которое будет запускаться по умолчанию, если не будет указан конкретный таск. basedir – директория, которая будет считаться корневой при сборке, все пути будут указываться относительно нее. Все три параметра являются необязательными, их можно безболезненно опустить. Тег property. Этот тег позволяет нам объявить поле с каким-либо значением, и использовать его затем по всему скрипту. Соответственно, если впоследствии нам нужно будет поменять это значение, это нужно будет делать в одном месте, а не во всем коде. name – название переменной, value – ее значение. Теперь мы можем использовать такую конструкцию: ${build.dir}, вместо нее будет подставлено значение «build». К тегу target мы добавили атрибут description. Никакой смысловой нагрузки он не несет, просто дополнительное описание. Поехали дальше. Сделаем несколько типовых тасков, а потом соберем их в итоговый документ. Некоторые задания требуют использования дополнительных библиотек. Но сначала определим свойства, которые мы будем использовать по ходу дальнейшей работы:
src.dir – каталог исходных java-файлов build.dir – каталог для результатов компиляции и упаковки build.classes – class-файлы lib – каталог для сторонних библиотек. Здесь я использовал абсолютный путь, т.к. у меня один каталог на несколько проектов. Создание новой директории
Новая директория создается тегом mkdir. Как мы видим из этого примера, задание может содержать несколько директив. Компиляция
Вот тут в теге target впервые появляется очень важный атрибут – depends. Запись depends="prepare" означает, что при запуске этого задания будет предварительно выполнено задание prepare. Если необходимо выполнить несколько тасков, они перечисляются через запятую, и выполняются в том порядке, в котором они указаны. Тег javac, как нетрудно догадаться, выполняет компиляцию java-файлов. Атрибутами srcdir и destdir мы указываем каталоги исходных и скомпилированных файлов. Для указания classpath существует одноименный тег, каждый элемент пути указывается отдельным тегом pathelement с атрибутом location. Упаковка в JAR-архив
Здесь мы сначала указываем, что упаковке должна предшествовать компиляция. Затем осуществляем архивацию с помощью тега jar. jarfile – имя архива, basedir – каталог, который мы будем паковать, metainf – тег для указания дополнительных файлов, которые мы желаем включить в папку META-INF. Компиляция JSP
(необходимы библиотеки jasper.jar и jasper-runtime.jar) Компиляция JSP-страниц выполняется с помощью задания jspc. Указывается исходная директория (srcdir), конечная директория (destdir), пакет (package), компилятор jasper (package). Директива include name="**/*.jsp" указывает, что должны быть откомпилированы все файлы с расширением .jsp, находящиеся в исходной директории. Работа с FTP
(необходима библиотека commons-net-1.4.0.jar) Как всегда, все очевидно следует из имен и названий ![]() Тег ftp. Атрибуты: action – команда сервера. В данном случае мы делаем закачку на сервер, поэтому put. server – имя удаленного сервера userid – имя пользователя password – пароль remotedir – директория, в которую будет производиться аплоад. Тег fileset используется в очень многих директивах ant. Он позволяет определить набор файлов, в т.ч. с использованием маски имени. В данном случае мы просто включаем туда конкретный файл директивой include. То есть, при запуске этого задания будет произведено копирование файла tvspace.jar в директорию /export/home/my_user/lib от имени пользователя my_user (разумеется, в случае правильной авторизации). Запуск shell-скрипта
(необходима библиотека jsch-0.1.21.jar) Запуск shell-скрипта можно осуществить с помощью тега sshexec. Этот тег отвечает за открытие SSH-соединения с удаленным сервером. host – имя удаленного сервера. trust – этот параметр показывает, «доверяет» ли сервер неизвестным хостам. Я с ним так до конца и не разобрался, но без этого не работало ![]() username – имя пользователя password – пароль command – директория, в которую будет производиться аплоад. Работа с БД
(для запуска необходимо подключить библиотеку ojdbc14.jar) Вновь все очевидно. Формат параметров соответствует обычной JDBCшной нотации. Тег sql имеет атрибуты driver (JDBC-драйвер для базы), url (URL, по которому доступна база), userid (имя пользователя) и password (пароль). Кроме того, можно еще использовать атрибут src и указать sql-файл с выполняемым скриптом (sql=”my_script_file.sql”). Но я делаю это прямо в теле тега, как показано выше. Итог Все задания описаны. Теперь мы можем написать, например, такой таск:
и получим задание, позволяющее одной-единственной командой выполнить достаточно разноплановую последовательность действий. Вся справочная информация получена из официального мануала, который можно найти по адресу http://ant.apache.org/manual/index.html. На официальном сайте ant (http://ant.apache.org) можно найти описания форматов всевозможных заданий, как базовых, так и сторонних. Возможности ant поистине огромны, и все это – при такой простоте управления! Кроме того, мы сохраняем преимущество кроссплатформенности и отвязываемся от среды-сборщика. Кстати, ant отлично интегрируется с современными IDE. P.S. Большая просьба ко всем, кто работал с ant из командной строки. Я пробовал все это из-под IDE (Idea & Eclipse), с командной строкой у меня не срослось. PATH, CLASSPATH и ANT_HOME прописан, но получаю такую же ошибку командной строки, как если бы виртуальная машина была запущена с неправильными параметрами. Может, кто-нибудь может что-то посоветовать? Это сообщение отредактировал(а) Lamer George - 12.9.2005, 16:20 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||||||||||||||||||
|
|||||||||||||||||||||||
allex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 5.9.2005 Репутация: нет Всего: нет |
Командную строку и сообщение об ошибке в студию!
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Строка проста, как валенок. Пользовал несколько вариантов:
ant ant -buildfile build.xml ant stop ant -buildfile build.xml stop А ошибка такая же, какую выдает команда java без параметров: Присоединённый файл ( Кол-во скачиваний: 70 ) ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Кто нить подскажите где можно достать мануал по ANT на русском?! ПЛИЗ!
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Thanx!
|
|||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Кстати, разобрался с той ошибкой?
У меня есть еще один вопрос! В общем ситуация такая: у меня есть база данных со всеми хранимками и процедурами, но некоторорые хранимки и процедуры надо регулярно обновлять из CVS. Сейчас это все приходится делать в ручную, но как известно лень! Есть предложение сделать это с помощью ANT. У кого-нибудь есть соображения как? |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
Да проще простого. Получится что-то такое:
Заменяешь свойства db.* и название скрипта sql на то, что тебе нужно и все должно работать. Естественно, если у тебя несколько скриптов, выполняешь тэг <sql> для каждого. |
|||
|
||||
batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
А разве скопом нельзя? В мануле есть такие примеры:
Или просто
Добавлено @ 09:30 Все заработало, но почему - не знаю ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
||||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Спасибо, попробую! Мне кажется удобней делать через fileset потому что скриптов много! Да и еще, не подскажите где взять драйвер для MS SQL Server 2000?! я просто недавно этим занимаюсь, поэтому не знаю где что!
![]() |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
Здесь драйвер от самой Microsoft - http://msdn.microsoft.com/data/jdbc/default.aspx. Здесь драйвер стороннего производства, open-source - http://jtds.sourceforge.net/. Судя по рассказам второй работает лучше, сам не пользовался.
|
|||
|
||||
vaz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
To Lamer George по поводу ошибки "А ошибка такая же, какую выдает команда java без параметров".
Посмотри не установлен ли у тебя ант в каталог, содержащий пробелы. Например, D:\Program files\Ant. Ант не работает с путями, содержащими пробелы. И еще очень насущный вопрос: С помощью <javac> таска можно компилить исходные файлы проекта. А как получить имена только компилируемых исходников? Насколько я понял ант компилит не все исходники подряд, а только измененные исходники. Или как дополнительно обработать исходник с помощью другой программы непосредственно в ходе компиляции с помощью таска <javac>. То есть нужно обрабатывать другой программой только измененные исходники, которые определил ант. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
А он заработал уже давно. Я так и не понял, в чем было дело. А ты уверен, что он компилит только измененные? Ведь Ant даже отследить этого не может - никакой иcтории изменений не ведется. Это сообщение отредактировал(а) Lamer George - 5.4.2006, 14:33 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: нет Всего: 5 |
ant/docs/manual/CoreTasks/javac.html Javac Description Compiles a Java source tree. The source and destination directory will be recursively scanned for Java source files to compile. Only Java files that have no corresponding .class file or where the class file is older than the .java file will be compiled. // выделено мною jer1 --------------------
:w!q |
|||
|
||||
chief39 |
|
||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 5 Всего: 77 |
на всяк случ. мож кому легче будет ![]() вместо -buildfile можно -f :
если есть в текущей папке файл build.xml - то ант сам его хватанёт. ant stop Если такого нету - тогда следует файл явно указать. то есть
В общем та же идеология замечательной утилитки make (которую, я, дурак, раньше недолюбливал) По поводу частичной сборки: так же как и make - компилит несуществующие или "освежает" старые. Зачастую clean можно не делать. Когда пересобирал проект - очень пригодилось - поменял мааахонький кусочек - оно его перекомпилило - и всё ![]() ![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||
|
|||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Другие программы можно запускать с помощью таска <apply>. Я например запускаю компилятор делфи.
|
|||
|
||||
jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: нет Всего: 5 |
hi, вот хочу аЛексус первый плюсик поставить, как это можно сделать?
--------------------
:w!q |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
||||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: 1 Всего: 1 |
Кстати есть одно дополнение для тех кто собирает проекты делфи на Анте.
Если ваш файл сборки будет не в той же директории где и *.dpr, то он не будет нормально компилировать в том случае если есть dcc32.cfg. Я эту проблему решил путем разделения файла сборки на два: один основной, а другой только для компиляции. Основной файл выглядит примерно так:
А второй, который копируется в раб. директории я указал выше. если у кого-нить есть какие-нибудь замечания или советы, жду! да и обратите внимание на <parallel> и <sequential>, очень полезные штуки, значительно уменьшает время сборки! |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
В дополнение ссылка на статью по Ant - http://www.opennet.ru/base/dev/ant_10.txt.html.
|
|||
|
||||
vaz |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Все таки не могу решить проблему. Мне необходимо с помощью другой программы обработать исходник и поменять содержимое doclet тега. Проблема состоит в том, что данную операцию нужно сделать только для изменившихся исходников, которые определит ant и делать мне это нужно непосредственно перед компиляцией каждого из изменившихся исходников.
В принципе в <javac> task можно включить опцию debug="on" и вывести в файл результаты компиляции, где и будут перечислены компилирующиеся файлы. Но во-первых, его парсить нужно и во-вторых, получаешь набор исходников, которые уже откомпилированы. А мне необходимо непосредственно перед компиляцией обработать изменившийся исходник.
Есть одна маленькая загвоздка, на которую никто из осваивающих ant не обращает внимание, а потом теряет время. !!! Если структура каталогов в точности не соответствует структуре пакетов, то ant будет компилить все подряд вне зависимсоти от того каких ты опций в task'e не понаставишь. Другими словами, дерево каталогов, в которые будут ложиться классы будет сформировано согласно структуре пакетов, а исходники могут лежать в дереве каталогов, которое не соответствует в точности дереву каталогов классов. Ведь сравнение изменившегося исходника ведется по классу, который должен лежать в подобной структуре каталогов. Поэтому нужно обязательно проверить соответствие дерева каталогов классов и дерево каталогов исходников на соответствие. Тогда ant будет компилировать только изменившиеся исходники. И еще хорошо бы воспользоваться task'ом <depend>.
не хочется лезть в документацию, но интересно знать за счет чего это происходит. |
||||
|
|||||
sandello |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: 2 Всего: 2 |
Можешь описать задачу, которая привела к такой необходимости? Меняешь файлы и компилируешь повторно. Идея плохая, но работать должно. Хотелось бы дополнить начинателя: Тег property: однажды сознанная property уже никогда не меняет своего значения. Это, в принципе, есть в статье на opennet Тег condition: позволяет реализовать ветвление. Пример:
В случае успешной провеки условия в теле элемента condition будет установлена переменная name (значение "ok_value"). Если условие не верно, переменная установлена не будет. Поэтому, если нужно построить конструкцию if ... else ..., то для этого достаточно после condition добавить тег proprety, в котором установить значение для неверного условия. Это сообщение отредактировал(а) sandello - 18.4.2006, 14:50 -------------------- ![]() |
|||
|
||||
vaz |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Задача следующая: есть increaseVersion.jar который увеличивает версию в java исходнике, в теге @version. Увеличивает по заданному правилу для определеленного формата x.xx или x.x. Если в какой-то исходник вносится изменение, то его версию нужно увеличить при следующей компиляции. Естественно ant найдет все изменившиеся исходники и скомпилирует только их. Но мне нужно перед тем как он их найдет увеличить версию. Если увеличивать версию после компиляции, то эти файлы снова окажутся измененными и ant их будет компилировать вечно. Можно ли каким-то образом вклинить запуск этого jar'ника в таск <javac> и непосредственно перед компиляцией увеличивать версию только тех исходников, в которые вносились изменения? Система контроля версий в данном случае не подходит по нескольким причинам: - версия класса должна меняться в исходнике после каждого изменения/компиляции а не после коммита - библиотека небольшая и разрабатывается и собирается одним человеком, т.е. отсутствуют там всякие мерджи версионные ветки - откаты тоже не нужны - ну и система контроля версий и место дополнительное ест и время потихоньку тоже. |
||||
|
|||||
sandello |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: 2 Всего: 2 |
Ты немного не понял. Я предлагал сделать что-то вроде:
А вот на счет системы контроля версии - ты не прав. Именно она очень удобна для этой задачи. На примере Subversion могу предложить несколько вариантов: 1. С использованием Keywords - тогда в каждый файл можно затолкать номер ревизии 2. С использованием svn status можно получить список изменных файлов без компиляции Я реализовал 3 вариант :-) Основная особенность - выбор, что будем увеличивать (version.subversion.patch.bugfix), решаю я. Для этого у ant'овского скрипта торчат наружу одноименные цели. Каждая такая цель увеличивает цифирку в определенной строке специального файла. Дальше - дело техники :-) Это сообщение отредактировал(а) sandello - 19.4.2006, 11:57 -------------------- ![]() |
|||
|
||||
vaz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
svn только начинаю осваивать и толком данную задачу быстро не решу. Попробую третий вариант :-), может у тебя есть простой пример?
|
|||
|
||||
sandello |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: 2 Всего: 2 |
Лови работающий скрипт
Добавлено @ 06:19 Он еще много чего интересного делает :-) -------------------- ![]() |
|||
|
||||
vaz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Хороший пример, попробую обстричь его для своих целей.
|
|||
|
||||
drHip |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 30.5.2007 Репутация: нет Всего: нет |
Все добавил, нашел еще и commoms-logging.jar но
смотрю в jasper, package org.apache.juli.logging существует, а самого LogFactory нет И где его искать? Tomcat 6.0, Ant 1.7.0 Добавлено через 11 минут и 19 секунд вот что еще нашел, но перевести это не смог
|
||||||
|
|||||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
drHip, я пробовал тогда под Ant 1.6. В понедельник поэкспериментирую с семеркой, попробуем разобраться.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
drHip |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 30.5.2007 Репутация: нет Всего: нет |
batigoal, ждем-с
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
drHip, у меня сейчас скомпилировать не получилось, но с другой ошибкой (ArrayIndexOutOfBounds).
Я добавлял еще jasper-compiler.jar.
Поиск утверждает, что в Томкат 5.5 он есть. Может, у тебя по версиям несинхрон? Откуда ты брал джасперовские библиотеки? Добавлено через 4 минуты и 21 секунду В шестерке тоже должен быть, судя по доке... -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
drHip |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 30.5.2007 Репутация: нет Всего: нет |
я использую из Tomcat 5
jasper-compiler-jdt.jar jasper-compiler.jar jasper-runtime.jar потому как в 6-ке не нашел jasper-runtime.jar catalina-ant.jar у меня из 6-ки (поменяв на 5-ку ничего не изменилось) |
|||
|
||||
dive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 25.10.2007 Где: Санкт-Петербург Репутация: нет Всего: 5 |
может пригодится кому.
утилита для сборки Ant скриптов из командной строки http://divehome.blogspot.com/2007/10/ant.html |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 15 Всего: 538 |
Не понял зачем эта утилита вообще нужна? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
dive |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 25.10.2007 Где: Санкт-Петербург Репутация: нет Всего: 5 |
к примеру, у меня build.xml содержит в себе 42 цели сборки (например по моделям телефонов, ибо ресурсы и код разнятся), чтобы запустить сборку конкретной модели мне необходимо писать следующее :
помнить все 42 цели мне не очень то хочется, а если проект не один то и не получится, поэтому я запускаю в каталоге со сриптом эту утилиту, она выводит на экран все таргеты для сборки, я выбираю нужную и жму Enter. |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 15 Всего: 538 |
Хм, весьма экзотическая ситуация.
Я бы ограничился батником или разными билдами. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java tools & IDE's | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |