<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.dote.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.dote.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Uuinnk</id>
		<title>DevelopmenOnTheEdge - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.dote.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Uuinnk"/>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Uuinnk"/>
		<updated>2026-06-21T06:15:21Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2018-01-22T08:40:10Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию, можно просто ant) — сборка war&lt;br /&gt;
* '''fast''' — быстрая сборка, без war - для редеплоя&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Добавление таргета:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot; modules=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — Быстрое обновление уже существующих в базе operation и query с кастомизациями&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug и тестирование ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
 export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для тестирования, можно использовать mvn install, временно подправив конфиг в (be4/src/build.xml):&lt;br /&gt;
(найти место по этой строке)&lt;br /&gt;
 for development &amp;lt;ivy:retrieve pattern=&amp;quot;${be4.basedir}/pom/target/[artifact]-[revision].[ext]&amp;quot; type=&amp;quot;jar,bundle&amp;quot; log=&amp;quot;quiet&amp;quot; setId=&amp;quot;ivy-deps&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2018-01-22T08:39:05Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию, можно просто ant) — сборка war&lt;br /&gt;
* '''fast''' — быстрая сборка, без war - для редеплоя&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Добавление таргета:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot; modules=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — Быстрое обновление уже существующих в базе operation и query с кастомизациями&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug и тестирование ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;br /&gt;
&lt;br /&gt;
Для тестирования, можно использовать mvn install, временно подправив конфиг в (be4/src/build.xml):&lt;br /&gt;
(найти место по этой строке)&lt;br /&gt;
&amp;lt;!-- for development &amp;lt;ivy:retrieve pattern=&amp;quot;${be4.basedir}/pom/target/[artifact]-[revision].[ext]&amp;quot; type=&amp;quot;jar,bundle&amp;quot; log=&amp;quot;quiet&amp;quot; setId=&amp;quot;ivy-deps&amp;quot;/&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-12-18T13:35:03Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;br /&gt;
&lt;br /&gt;
== beanexplorerdev, beanhelpers для be4 ==&lt;br /&gt;
&lt;br /&gt;
  cd BeanExplorer/release/    &lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote    &lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
&lt;br /&gt;
TODO может деплоить snapshots?&lt;br /&gt;
&lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-12-18T12:39:28Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;br /&gt;
&lt;br /&gt;
== beanexplorerdev, beanhelpers для be4 ==&lt;br /&gt;
&lt;br /&gt;
  cd BeanExplorer/release/    &lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote    &lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
&lt;br /&gt;
TODO может деплоить snapshots&lt;br /&gt;
&lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;br /&gt;
  mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-12-18T12:38:31Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* beanexplorerdev, beanhelpers для be4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;br /&gt;
&lt;br /&gt;
== beanexplorerdev, beanhelpers для be4 ==&lt;br /&gt;
cd BeanExplorer/release/    &lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote    &lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
&lt;br /&gt;
TODO может деплоить snapshots&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-12-18T12:37:58Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;br /&gt;
&lt;br /&gt;
== beanexplorerdev, beanhelpers для be4 ==&lt;br /&gt;
cd BeanExplorer/release/&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
&lt;br /&gt;
TODO может деплоить snapshots&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-12-18T12:37:14Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
cd BeanExplorer/release/&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote&lt;br /&gt;
&lt;br /&gt;
TODO может деплоить snapshots&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;br /&gt;
mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-08-30T09:08:08Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию, можно просто ant) — сборка war&lt;br /&gt;
* '''fast''' — быстрая сборка, без war - для редеплоя&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Добавление таргета:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot; modules=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — Быстрое обновление уже существующих в базе operation и query с кастомизациями&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-02T11:34:18Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Добавление таргета:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot; modules=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — Быстрое обновление уже существующих в базе operation и query с кастомизациями&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-02T11:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
Добавление таргета:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot; modules=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-02T10:28:28Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_;utilityDocuments&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-02T10:21:08Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query;utilityDocuments:op&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-02T10:18:04Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе operation и query&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_&amp;quot;''' - все operation и query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:op&amp;quot;''' - все operation&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:query&amp;quot;''' - все query&lt;br /&gt;
&lt;br /&gt;
Доступны варианты: query, queryRecord, queryCust, op, opRecord, opCust. Без второго параметра обновляется всё.&lt;br /&gt;
&lt;br /&gt;
 Только код одной операции:&lt;br /&gt;
 '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_:opRecord:Select Kkt&amp;quot;'''&lt;br /&gt;
 Несколько Entity:&lt;br /&gt;
 '''ant -DBE4_SKIP_IVY=true be.fast -Dfiles=&amp;quot;_kkt_:query;utilityDocuments:op&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T07:10:37Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе сущностей&lt;br /&gt;
&lt;br /&gt;
JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;src/js/operations/persons2households - AddPrivCategory.js&amp;quot;'''&lt;br /&gt;
код и кастомизации для всех query в указанных Entity (перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;'''&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - только код &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T07:10:16Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе сущностей&lt;br /&gt;
&lt;br /&gt;
JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js''''&lt;br /&gt;
код и кастомизации для всех query в указанных Entity (перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;'''&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - только код &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T07:09:06Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе сущностей&lt;br /&gt;
&lt;br /&gt;
JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — &lt;br /&gt;
код и кастомизации для всех query в указанных Entity (перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;''' - &lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - код для всех query &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T07:07:14Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе сущностей&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;''' - код и кастомизации для всех query в указанных Entity (перечисленных через ;)&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - код для всех query &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T07:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* be.fast */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
Быстрое обновление уже существующих в базе сущностей&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;''' - код и кастомизации для всех query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - код для всех query &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-06-01T06:58:07Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
=== be.fast ===&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml&amp;quot;''' - код и кастомизации для всех query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode&amp;quot;''' - код для всех query &lt;br /&gt;
&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCode=Correction Accruals&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:queryCust=Correction Accruals&amp;quot;''' - кастомизации query&lt;br /&gt;
* '''ant be.fast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;utilityDocuments.yaml:query=Correction Accruals&amp;quot;''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-05-31T11:25:35Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;src/js/operations/persons2households - AddPrivCategory.js&amp;quot;''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_.yaml:query=Устройства&amp;quot;''' - код query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_.yaml:queryCust=Устройства&amp;quot;''' - кастомизации query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles=&amp;quot;_kkt_.yaml:queryAll=Устройства&amp;quot;''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fileFast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-05-31T10:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:query=Устройства'''' - код query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryCust=Устройства'''' - кастомизации query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryAll=Устройства'''' - код и кастомизации query&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fileFast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-05-31T09:51:49Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:query=Устройства'''' - кода query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryCust=Устройства'''' - костомизаций query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryAll=Устройства'''' - кода и костомизаций query&lt;br /&gt;
&lt;br /&gt;
Добавление таргета, добавить '''modules=&amp;quot;true&amp;quot;''' - если из модулей:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fileFast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug ant task ==&lt;br /&gt;
&lt;br /&gt;
For Java 1.5 and later:&lt;br /&gt;
  export ANT_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y&lt;br /&gt;
Run your Ant script and then attach to port 5005 with your debugger.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-05-31T07:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:query=Устройства'''' - кода query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryCust=Устройства'''' - костомизаций query&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='_kkt_.yaml:queryAll=Устройства'''' - кода и костомизаций query&lt;br /&gt;
&lt;br /&gt;
Добавление таргета&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fileFast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных элементов. JavaScript/server операций, code query, customizations query&lt;br /&gt;
Время выполнения: condo4 (05.2017) be.meta 17 сек, ant be.fileFast - 4 сек&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL</id>
		<title>Сборка BE4 и BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_BE4_%D0%B8_BE-SQL"/>
				<updated>2017-05-30T11:43:45Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сборка BE-SQL ==&lt;br /&gt;
&lt;br /&gt;
BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) [https://sites.google.com/a/developmentontheedge.com/wiki/home/sistemnoe-administrirovanie/maven-repozitorij-nexus во внутренней вики]. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:&lt;br /&gt;
&lt;br /&gt;
* Выкачать проект dote/dote_modules&lt;br /&gt;
* Зайти в dote_modules/sql&lt;br /&gt;
* Изменить номер версии в pom.xml:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Запустить mvn deploy.&lt;br /&gt;
&lt;br /&gt;
После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.&lt;br /&gt;
&lt;br /&gt;
Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).&lt;br /&gt;
&lt;br /&gt;
== Структура BE4 ==&lt;br /&gt;
&lt;br /&gt;
Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:&lt;br /&gt;
&lt;br /&gt;
* BE4 Core: ядро BE4, необходимое для работы через [[Использование ant|Ant]]. Состоит из пакетов (включая подпакеты):&lt;br /&gt;
** com.beanexplorer.enterprise.be4core&lt;br /&gt;
** com.beanexplorer.enterprise.metadata&lt;br /&gt;
* BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.&lt;br /&gt;
&lt;br /&gt;
BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.&lt;br /&gt;
&lt;br /&gt;
BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.&lt;br /&gt;
&lt;br /&gt;
== Добавление/обновление зависимости в BE4 ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.&lt;br /&gt;
&lt;br /&gt;
1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
   &amp;lt;groupId&amp;gt;com.developmentontheedge&amp;lt;/groupId&amp;gt;&lt;br /&gt;
   &amp;lt;artifactId&amp;gt;sql&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.0.24&amp;lt;/version&amp;gt; --&amp;gt; 0.0.25&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.24&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;dependency org=&amp;quot;com.developmentontheedge&amp;quot; name=&amp;quot;sql&amp;quot; rev=&amp;quot;0.0.25&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):&lt;br /&gt;
&lt;br /&gt;
 dep/sql-0.0.24.jar, --&amp;gt;  dep/sql-0.0.25.jar,&lt;br /&gt;
&lt;br /&gt;
Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.&lt;br /&gt;
&lt;br /&gt;
После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.&lt;br /&gt;
&lt;br /&gt;
== Сборка версии BE4 ==&lt;br /&gt;
&lt;br /&gt;
Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.&lt;br /&gt;
&lt;br /&gt;
1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.46&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;version&amp;gt;0.1.47&amp;lt;/version&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.&lt;br /&gt;
&lt;br /&gt;
2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:&lt;br /&gt;
&lt;br /&gt;
 BE4_VER=0.1.46&lt;br /&gt;
&lt;br /&gt;
Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: &amp;lt;code&amp;gt;ant -DBE4_VER=0.1.46&amp;lt;/code&amp;gt;. Таким образом можно сравнивать поведение в разных версиях.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.&lt;br /&gt;
&lt;br /&gt;
3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:&lt;br /&gt;
&lt;br /&gt;
3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:&lt;br /&gt;
&lt;br /&gt;
 Bundle-Version: 0.1.46&lt;br /&gt;
&lt;br /&gt;
3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project&lt;br /&gt;
&lt;br /&gt;
3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor. &lt;br /&gt;
&lt;br /&gt;
3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.&lt;br /&gt;
&lt;br /&gt;
3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish&lt;br /&gt;
&lt;br /&gt;
3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)&lt;br /&gt;
&lt;br /&gt;
3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor&lt;br /&gt;
&lt;br /&gt;
3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.&lt;br /&gt;
&lt;br /&gt;
3.9. Сохраняем и нажимаем Build All.&lt;br /&gt;
&lt;br /&gt;
3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-05-30T11:01:38Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
Новая версия переехала на [https://github.com/developmentontheedge https://github.com/developmentontheedge]&lt;br /&gt;
&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BeanExplorer5 проекта|Сборка BE5 проекта]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant</id>
		<title>Использование ant</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ant"/>
				<updated>2017-04-25T04:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Помимо использования IDE основной be4-функционал доступен с помощью ant-таргетов.&lt;br /&gt;
&lt;br /&gt;
=== Стандартные таргеты ===&lt;br /&gt;
&lt;br /&gt;
В проектах на be4 определены следующие ant-таргеты:&lt;br /&gt;
* '''be.validate''' — валидация [[Project|проекта]] (вычитывание всех файлов, базовые проверки на корректность, исполнение всего [[Freemarker]]; никаких обращений к базе не делается)&lt;br /&gt;
* '''be.update''' — инкрементальное обновление схемы, метаданных и локализаций. Если обновление схемы может привести к потере данных, операция будет отклонена. Для принудительного выполнения определите BE4_FORCE_UPDATE=true&lt;br /&gt;
* '''be.meta''' — инкрементальное обновление метаданных (включая roles, icons, references, page customizations, pages)&lt;br /&gt;
* '''be.locale''' — инкрементальное обновление локализаций&lt;br /&gt;
* '''be.ddl''' — инкрементальное обновление схемы. Для принудительного выполнения определите BE4_FORCE_UPDATE=true. Для обновления схемы клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''be.ddl.check''' — вывод SQL-предложений, которые потребуются для инкрементального обновления схемы. Никаких изменений в базу не вносится. Для учёта клонированных таблиц используйте BE4_CLONES=true.&lt;br /&gt;
* '''setup.db''' — полное разворачивание базы с нуля (как в BE)&lt;br /&gt;
* '''setup.meta''' — полное внесение метаданных и локализаций&lt;br /&gt;
* '''setup.just.meta''' — полное внесение метаданных&lt;br /&gt;
* '''setup.locale''' — полное внесение локализаций&lt;br /&gt;
* '''setup.adhoc''' — выполнение одного или нескольких FTL-скриптов из custom steps (передаются параметром -DA_SCRIPT='script1;script2'). Можно запускать скрипты из модуля (-DA_SCRIPT='realty:dictionaries') либо из всех модулей, где такой скрипт есть (-DA_SCRIPT='all:dictionaries')&lt;br /&gt;
* '''main''' (таргет по умолчанию) — сборка war&lt;br /&gt;
&lt;br /&gt;
* '''ant be.fileFast -DBE4_SKIP_IVY=true -Dfiles='src/js/operations/persons2households - AddPrivCategory.js'''' — быстрое обновление JavaScript/server операций(перечисленных через ;)&lt;br /&gt;
Добавление таргета&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.fileFast&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;be4.fileFast projectPath=&amp;quot;${project.home}&amp;quot; files=&amp;quot;${files}&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
Имеются следующие BE4-специфичные переменные&lt;br /&gt;
* '''BE4_DIR''' — каталог с проектом be4 (без него ничего не заработает)&lt;br /&gt;
* '''BE4_PROFILE''' — если задано, указывает профиль соединения к базе данных (из connectionProfiles.*.yaml), который необходимо использовать.&lt;br /&gt;
* '''BE4_LOG_DIR''' — если задано, данный каталог будет использован для логирования BE4-операций.&lt;br /&gt;
* '''BE4_DEBUG''' — если &amp;quot;true&amp;quot;, будет выводиться дополнительная отладочная информация в stderr.&lt;br /&gt;
* '''BE4_FORCE_UPDATE''' — если &amp;quot;true&amp;quot;, будут выполняться потенциально опасные изменения в схеме базы данных (которые могут привести к потере пользовательских данных).&lt;br /&gt;
* '''BE4_CLONES''' — если &amp;quot;true&amp;quot;, изменения схемы коснутся также клонированных таблиц (у которых численный суффикс добавлен к имени таблицы).&lt;br /&gt;
* '''BE4_UNLOCK_PROTECTED_PROFILE''' — если &amp;quot;true&amp;quot;, защищённый (protected) [[BeConnectionProfile|профиль соединения]] будет использоваться без дополнительных подтверждений.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_&amp;amp;lt;имя_модуля&amp;amp;gt;''' — если true, то будут использованы метаданные из BE4-модуля (BE4-модуль должен существовать), иначе — из старого BE-модуля с тем же именем.&lt;br /&gt;
&lt;br /&gt;
Только с таргетом be.validate:&lt;br /&gt;
* '''BE4_SKIP_VALIDATION'''=true — если задано, пропустить собственно валидацию (но прочие команды из списка ниже будут выполняться).&lt;br /&gt;
* '''BE4_RDBMS'''=mysql/postgres/oracle/db2/sqlserver/m4 — если задано, валидация будет выполняться с использованием соответствующей СУБД (это может повлиять на выполнение условных секций в FTL, результат разворачивания макросов, включения extras и т. д.).&lt;br /&gt;
* '''BE4_CHECK_QUERY'''=&amp;quot;entity.query&amp;quot; — если задано, текст указанного запроса после выполнения FTL будет выведен на экран). Если указана фиктивная BE4_RDBMS=m4, на место СУБД-специфичных FTL-функций будут подставлены соответствующие m4-функции (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_DDL'''=entity — если задано, DDL, необходимый для создания указанной сущности будет выведен на экран. Если указана фиктивная BE4_RDBMS=m4, будет сгенерирован соответствующий m4-код (может пригодиться для обратного портирования кода в m4).&lt;br /&gt;
* '''BE4_CHECK_ROLES'''=true — если задано, на экран будет выведен список ролей проекта, действующий в данных условиях. Может пригодиться, если часть ролей устанавливается условно через extras и хочется проверить, правильно ли отработали условия.&lt;br /&gt;
* '''BE4_CREATE_PROFILE_PROPERTIES'''=&amp;lt;file_path&amp;gt; — создаёт файл properties со свойствами профиля соединения и проекта, который может пригодиться для старой системы тестирования.&lt;br /&gt;
* '''BE4_SAVE'''=true — если задано, проект будет пересохранён (только основной проект, без учёта подключенных модулей) с помощью той же процедуры, как при сохранении через Eclipse. Могут быть отсортированы или переформатированы некоторые элементы проекта.&lt;br /&gt;
&lt;br /&gt;
=== Задачи ===&lt;br /&gt;
При редактировании ant-скриптов можно использовать следующие задачи (tasks):&lt;br /&gt;
* '''be4.db''' — создание базы по BE4-проекту. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
&lt;br /&gt;
* '''be4.meta''' — синхронизация. Параметры:&lt;br /&gt;
:* modules: если true, будут использованы BE4-модули&lt;br /&gt;
:* mode: режим синхронизации (all, meta, locale, ddl, ddl_clones, security). Если установлено -DBE4_CLONES=true, то режим ddl превращается сам в ddl_clones (добавляется обновление схемы клонированных таблиц).&lt;br /&gt;
&lt;br /&gt;
* '''be4.data''' — выполнение скрипта или набора скриптов. Параметры:&lt;br /&gt;
:* scriptName: имена скриптов через точку с запятой. Можно написать moduleName:scriptName для выполнения скрипта из модуля, либо all:scriptName для выполнения скрипта с таким именем из всех модулей.&lt;br /&gt;
&lt;br /&gt;
* '''be4.validate''' — валидировать BE4-проект и (для немодульного проекта) заполнить свойства ANT из модели&lt;br /&gt;
:* modules: если true, будут подключены BE4-модули. Рекомендуется ставить в true всегда кроме каких-то частных случаев, когда важна производительность.&lt;br /&gt;
&lt;br /&gt;
* '''be4.fileFast''' — быстрое обновление отдельных файлов(в разработке). Сейчас только JavaScript/server операций&lt;br /&gt;
&lt;br /&gt;
* '''be4.tools''' — дополнительный инструментарий BE4.&lt;br /&gt;
&lt;br /&gt;
У всех задач есть общие параметры:&lt;br /&gt;
* projectPath (обязательно) — путь к проекту&lt;br /&gt;
* logDir — каталог для логирования (переопределяет переменную BE4_LOG_DIR)&lt;br /&gt;
* useMeta — экспериментальная опция: использовать базовые beanexplorer-метаданные из YAML-проекта beanexplorer_meta без вычитывания базы инициализированной через m4.&lt;br /&gt;
&lt;br /&gt;
=== Инструментарий ===&lt;br /&gt;
Для технических операций имеется специальная ant-задача '''be4.tools'''. По умолчанию эта задача не соответствует никакому ant-таргету. Если она требуется, можно создать таргет, например, так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;be.tools&amp;quot; depends=&amp;quot;be4_settings&amp;quot;&amp;gt;&amp;lt;be4.tools projectPath=&amp;quot;${project.home}&amp;quot;/&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для пользования инструментами необходимо задавать дополнительные свойства:&lt;br /&gt;
* '''BE4_DUMP_TABLES'''=&amp;quot;таблица1,таблица2,...&amp;quot; — сдампить из базы соответствующей текущему connection-profile заданные таблицы в новый yaml-проект (будет создан подкаталог yamlDump в текущем каталоге). Может пригодиться для создания болванки при переносе таблиц из m4 в yaml. Пример:&lt;br /&gt;
 ant be.tools -DBE4_PROFILE=foo -DBE4_DUMP_TABLES=users,queries,operations&lt;br /&gt;
&lt;br /&gt;
:В дампе присутствуют все [[Query|представления]], [[Operation|операции]] и схемы указанных [[Entity|сущностей]], а также сообщения [[EntityLocalizations|локализации]] с таким же entityName. Кроме того, содерижмое сущностей с типом dictionary (в которых менее 10000 строк) дампится в ftl-скрипты, которые автоматически подключены из dictionaries.ftl.&lt;br /&gt;
&lt;br /&gt;
* '''BE4_SQL_CONSOLE'''=true — включить FTL/SQL-консоль в контексте текущего проекта и выбранного профиля соединения. Далее можно в интерактивном режиме вводить FTL, который будет преобразовываться в SQL и выполняться. Если просто хочется выполнить FTL, можно начинать с комментария //. К примеру, если хотим проверить как раскрывается макрос:&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 //${CRM_AGE('date', 'date2')}&lt;br /&gt;
 SQL&amp;gt; //            CAST(EXTRACT(YEAR FROM AGE(date2,date)) AS INTEGER)&lt;br /&gt;
&lt;br /&gt;
:Если комментарий не использовать, запрос выполнится (выводится до 20 строк результата):&lt;br /&gt;
&lt;br /&gt;
 Enter FTL/SQL (use 'quit' to exit):&lt;br /&gt;
 SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 SQL&amp;gt; SELECT * FROM entities LIMIT 5;&lt;br /&gt;
 | name                  | displayname           | primarykeycolumn | type              | entitymodel | origin       |&lt;br /&gt;
 |-----------------------|-----------------------|------------------|-------------------|-------------|--------------|&lt;br /&gt;
 | operations_per_status | operations_per_status | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | jsprograms            | jsprograms            | publicID         | metadata          | null        | beanexplorer |&lt;br /&gt;
 | operationExtension    | operationExtension    | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | pageCustomisation     | pageCustomisation     | ID               | metadata          | null        | beanexplorer |&lt;br /&gt;
 | icons                 | Icons                 | ID               | genericCollection | null        | beanexplorer |&lt;br /&gt;
&lt;br /&gt;
Для компиляции самого BE4 (в объёме необходимом для последующего использования вышеуказанных ant-таргетов) необходимо набрать ant в каталоге be4/src. Не требуется никаких внешних зависимостей.&lt;br /&gt;
&lt;br /&gt;
== Использование вне приложений ==&lt;br /&gt;
Следующие цели можно запускать без какого-либо приложения, т.е. досаточно просто зайти в папку be4/src и написать &amp;quot;ant someTarget&amp;quot;:&lt;br /&gt;
* '''wizard''' — позволяет генерировать новые BE4 приложения. Функционал аналогичен функционалу создания нового приложения в BEclipse (File → New → Project → BeanExplorer → BeanExplorer Project), однако все данные вводятся в консоли, а не в GUI.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-02-27T11:47:14Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* BeanExplorer5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BeanExplorer5 проекта|Сборка BE5 проекта]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-02-27T11:47:04Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* BeanExplorer5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BE5 проекта|Сборка BeanExplorer5 проекта]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/BeanExplorer5</id>
		<title>BeanExplorer5</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/BeanExplorer5"/>
				<updated>2017-02-27T11:46:14Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Это основная статья о BeanExplorer5.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку эта основная статья недописана, остальная её часть для тех, кто будет дорабатывать BeanExplorer5, а не использовать.&lt;br /&gt;
&lt;br /&gt;
==Концепции и технологии==&lt;br /&gt;
&lt;br /&gt;
Основные технологии, которые мы используем - это Java, Java Servlet, OSGi, React, SystemJS, ES2015 через Babel.&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
&lt;br /&gt;
Основные frontend компоненты написаны на React, но могут быть написаны на чём угодно. Поскольку React - это лишь &amp;quot;V&amp;quot; из MVC, то часть функционала полноценного frontend framework было необходимо реализовать, и этот функционал находится в be5/be5-frontend/src/scripts/be5.js (или просто be5 - далее буду писать имена скриптов кратко). Это покрывает функционал routing, requests, frontend localization. Также полезный базовый функционал находится в be5/bus, be5/createStore, be5/createSimpleStore, be5/ext.&lt;br /&gt;
* bus - сообщения (брокер из паттерна pub/sub); например, bus.fire('DocumentChange', value), bus.listen('DocumentChange', value =&amp;gt; ...);&lt;br /&gt;
* ext - расширения;&lt;br /&gt;
* createStore - создание store для управления данными на frontend; позволяет подписаться на его изменения;&lt;br /&gt;
* createSimpleStore - создание store, полным состоянием которого является результат GET запроса.&lt;br /&gt;
&lt;br /&gt;
Необходимые части frontend подгружаются динамически с помощью SystemJS.&lt;br /&gt;
&lt;br /&gt;
JSX+ES2015 скрипты компилируются с помощью Babel при сборке проекта.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* frontend подготовлен, но не переведён на [https://github.com/reactjs/react-redux redux], а это необходимо для упрощения работы с React компонентами (без redux или Flux бывает довольно нетривиально управлять состоянием React компонентов);&lt;br /&gt;
* be5.js требует разделения на небольшие части, также, как выделены bus и ext;&lt;br /&gt;
* невозможно отказаться от компиляции ES2015, даже если она будет поддерживаться всеми браузерами. SystemJS проверяет наличие ES2015 синтаксиса в скриптах, и в случае его наличия пытается использовать транслятор в браузере, даже если явно указано, что транслятора нет.&lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* используйте [https://github.com/reactjs/react-redux redux], [https://facebook.github.io/react/docs/two-way-binding-helpers.html React two-way binding], [https://github.com/JedWatson/classnames React classNames].&lt;br /&gt;
&lt;br /&gt;
===Backend===&lt;br /&gt;
&lt;br /&gt;
Основные части API находятся в com.beanexplorer.enterprise.api. Проще всего начать знакомство с BE5, посмотрев на содержимое этого пакета и его подпакетов. В com.beanexplorer.enterprise.api.experimental.v1 хранятся маленькие полезности. Если они становятся не экспериментальными, а доказавшими полезность, можно переносить их в другие подпакеты api. v1 в названии пакета необходимо для поддержки разного API для одинакового функционала, если невозможно быстро отрефакторить код с экспериментальным функционалом или если хочется проверить, какой подход окажется полезнее.&lt;br /&gt;
&lt;br /&gt;
Сердце всего BE5 - это ServiceProvider. ServiceProvider доступен компонентам, а в конструкторы сервисов инжектируются другие сервисы или сам ServiceProvider.&lt;br /&gt;
&lt;br /&gt;
Good practices:&lt;br /&gt;
* Разделяем модельные элементы на бины без логики, сервисы и репозитории.&lt;br /&gt;
* Презентационный код пишется в компонентах. Если в компоненте много строчек кода, то что-то пошло не так.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* При написании operation почти любая строчка кода приводит к увеличению зависимости от наличия метаданных в БД, а также ухудшению возможности что либо протестировать, равно как и невозможности переиспользовать написанный код. Необходимо новое API для операций, полагающееся на сервисы - содержимого com.beanexplorer.enterprise.api.experimental и com.beanexplorer.enterprise.api.experimental.v1 недостаточно.&lt;br /&gt;
* Нет предусмотренного сетапа для тестирования.&lt;br /&gt;
* Нет API для запросов из БД, которое покрывает все возможные SQL запросы.&lt;br /&gt;
* Мы не избавились от метаданных в базе данных, поскольку BeanExplorer5 использует legacy код, который полагается на наличие метаданных в базе данных.&lt;br /&gt;
* Нет стандартного способа взять запрос из Query (той, что определена в YAML) и запустить его. Дело в том, что концептуально сейчас Query - это запросы, которые используются как запросы для таблиц, которые может увидеть пользователь. Такие запросы помечаются набором ролей, обладатели которых могут запускать запросы. Однако бывает необходимость описать запрос на BE-SQL и запустить его из Java. На мой взгляд не только роли должны игнорироваться, но и вообще такие запросы должны либо где-то в другом месте лежать (например, namedQueries.yaml), либо быть приписанными к Entity и не находиться в разделе queries, а, например, находиться в разделе &amp;quot;systemQueries&amp;quot; (причём поскольку это новые запросы, они никогда не должны попадать в БД, а быть только в in-memory meta/project; сейчас запустить обычную Query через BE-SQL игнорируя роли можно так: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
executorService.createExecutor(meta.getQueryIgnoringRoles(&amp;quot;entityName&amp;quot;, &amp;quot;queryName&amp;quot;), request).execute())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* Можно ресширить функционал ServiceProvider добавлением способности обрабатывать аннотированные поля сервисов - это избавит от проблем обхода циклических зависимостей сервисов и написания boilderplate в конструкторах. Также возможно попробовать сэмулировать поведение из Spring Core или Google Guice - это бы позволило просто перйти на них при возможности (см. следующее).&lt;br /&gt;
* Можно даже использовать Google Guice или переиспользовать Spring Core, если найдётся хороший способ регистрации сервисов из разных OSGi модулей (сам BE5 и BE5 приложение - в разных OSGi модулях).&lt;br /&gt;
* В идеальном случае было бы хорошо не писать репозитории, да и сервисы для запросов - для этого есть Hibernate, реализации JPA и другие ORM. А ещё лучше - попробовать переиспользовать Spring Data (объявлять интерфейсы с методами, описывающими запрос, без необходимости писать сам код запроса - как personRepository.findByEmailAndActive(&amp;quot;email&amp;quot;, true) - вызов метода из интерфейса, реализацию которого подкладывает Spring).&lt;br /&gt;
* Или хотя бы доделать SQL builder (SqlBuilder) и SQL Service (SqlService), потому что они сейчас не позволяют делать запросы с LEFT JOIN и WITH RECURSIVE.&lt;br /&gt;
* В таком случае было бы хорошо реализовывать код репозиториев с использованием одного универсального парсера из ResultSet в бины (при этом он должен работать по принципу fail-fast, а не как Dynamic.assign(Object bean, DynamicPropertySet dynamicProperties), который игнорирует все ошибки).&lt;br /&gt;
&lt;br /&gt;
==Сборка BeanExplorer5==&lt;br /&gt;
См. [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]].&lt;br /&gt;
&lt;br /&gt;
==BeanExplorer5 API==&lt;br /&gt;
См. [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BeanExplorer5]]&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/BeanExplorer5</id>
		<title>BeanExplorer5</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/BeanExplorer5"/>
				<updated>2017-02-27T11:44:55Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Это основная статья о BeanExplorer5.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку эта основная статья недописана, остальная её часть для тех, кто будет дорабатывать BeanExplorer5, а не использовать.&lt;br /&gt;
&lt;br /&gt;
==Концепции и технологии==&lt;br /&gt;
&lt;br /&gt;
Основные технологии, которые мы используем - это Java, Java Servlet, OSGi, React, SystemJS, ES2015 через Babel.&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
&lt;br /&gt;
Основные frontend компоненты написаны на React, но могут быть написаны на чём угодно. Поскольку React - это лишь &amp;quot;V&amp;quot; из MVC, то часть функционала полноценного frontend framework было необходимо реализовать, и этот функционал находится в be5/be5-frontend/src/scripts/be5.js (или просто be5 - далее буду писать имена скриптов кратко). Это покрывает функционал routing, requests, frontend localization. Также полезный базовый функционал находится в be5/bus, be5/createStore, be5/createSimpleStore, be5/ext.&lt;br /&gt;
* bus - сообщения (брокер из паттерна pub/sub); например, bus.fire('DocumentChange', value), bus.listen('DocumentChange', value =&amp;gt; ...);&lt;br /&gt;
* ext - расширения;&lt;br /&gt;
* createStore - создание store для управления данными на frontend; позволяет подписаться на его изменения;&lt;br /&gt;
* createSimpleStore - создание store, полным состоянием которого является результат GET запроса.&lt;br /&gt;
&lt;br /&gt;
Необходимые части frontend подгружаются динамически с помощью SystemJS.&lt;br /&gt;
&lt;br /&gt;
JSX+ES2015 скрипты компилируются с помощью Babel при сборке проекта.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* frontend подготовлен, но не переведён на [https://github.com/reactjs/react-redux redux], а это необходимо для упрощения работы с React компонентами (без redux или Flux бывает довольно нетривиально управлять состоянием React компонентов);&lt;br /&gt;
* be5.js требует разделения на небольшие части, также, как выделены bus и ext;&lt;br /&gt;
* невозможно отказаться от компиляции ES2015, даже если она будет поддерживаться всеми браузерами. SystemJS проверяет наличие ES2015 синтаксиса в скриптах, и в случае его наличия пытается использовать транслятор в браузере, даже если явно указано, что транслятора нет.&lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* используйте [https://github.com/reactjs/react-redux redux], [https://facebook.github.io/react/docs/two-way-binding-helpers.html React two-way binding], [https://github.com/JedWatson/classnames React classNames].&lt;br /&gt;
&lt;br /&gt;
===Backend===&lt;br /&gt;
&lt;br /&gt;
Основные части API находятся в com.beanexplorer.enterprise.api. Проще всего начать знакомство с BE5, посмотрев на содержимое этого пакета и его подпакетов. В com.beanexplorer.enterprise.api.experimental.v1 хранятся маленькие полезности. Если они становятся не экспериментальными, а доказавшими полезность, можно переносить их в другие подпакеты api. v1 в названии пакета необходимо для поддержки разного API для одинакового функционала, если невозможно быстро отрефакторить код с экспериментальным функционалом или если хочется проверить, какой подход окажется полезнее.&lt;br /&gt;
&lt;br /&gt;
Сердце всего BE5 - это ServiceProvider. ServiceProvider доступен компонентам, а в конструкторы сервисов инжектируются другие сервисы или сам ServiceProvider.&lt;br /&gt;
&lt;br /&gt;
Good practices:&lt;br /&gt;
* Разделяем модельные элементы на бины без логики, сервисы и репозитории.&lt;br /&gt;
* Презентационный код пишется в компонентах. Если в компоненте много строчек кода, то что-то пошло не так.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* При написании operation почти любая строчка кода приводит к увеличению зависимости от наличия метаданных в БД, а также ухудшению возможности что либо протестировать, равно как и невозможности переиспользовать написанный код. Необходимо новое API для операций, полагающееся на сервисы - содержимого com.beanexplorer.enterprise.api.experimental и com.beanexplorer.enterprise.api.experimental.v1 недостаточно.&lt;br /&gt;
* Нет предусмотренного сетапа для тестирования.&lt;br /&gt;
* Нет API для запросов из БД, которое покрывает все возможные SQL запросы.&lt;br /&gt;
* Мы не избавились от метаданных в базе данных, поскольку BeanExplorer5 использует legacy код, который полагается на наличие метаданных в базе данных.&lt;br /&gt;
* Нет стандартного способа взять запрос из Query (той, что определена в YAML) и запустить его. Дело в том, что концептуально сейчас Query - это запросы, которые используются как запросы для таблиц, которые может увидеть пользователь. Такие запросы помечаются набором ролей, обладатели которых могут запускать запросы. Однако бывает необходимость описать запрос на BE-SQL и запустить его из Java. На мой взгляд не только роли должны игнорироваться, но и вообще такие запросы должны либо где-то в другом месте лежать (например, namedQueries.yaml), либо быть приписанными к Entity и не находиться в разделе queries, а, например, находиться в разделе &amp;quot;systemQueries&amp;quot; (причём поскольку это новые запросы, они никогда не должны попадать в БД, а быть только в in-memory meta/project; сейчас запустить обычную Query через BE-SQL игнорируя роли можно так: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
executorService.createExecutor(meta.getQueryIgnoringRoles(&amp;quot;entityName&amp;quot;, &amp;quot;queryName&amp;quot;), request).execute())&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* Можно ресширить функционал ServiceProvider добавлением способности обрабатывать аннотированные поля сервисов - это избавит от проблем обхода циклических зависимостей сервисов и написания boilderplate в конструкторах. Также возможно попробовать сэмулировать поведение из Spring Core или Google Guice - это бы позволило просто перйти на них при возможности (см. следующее).&lt;br /&gt;
* Можно даже использовать Google Guice или переиспользовать Spring Core, если найдётся хороший способ регистрации сервисов из разных OSGi модулей (сам BE5 и BE5 приложение - в разных OSGi модулях).&lt;br /&gt;
* В идеальном случае было бы хорошо не писать репозитории, да и сервисы для запросов - для этого есть Hibernate, реализации JPA и другие ORM. А ещё лучше - попробовать переиспользовать Spring Data (объявлять интерфейсы с методами, описывающими запрос, без необходимости писать сам код запроса - как personRepository.findByEmailAndActive(&amp;quot;email&amp;quot;, true) - вызов метода из интерфейса, реализацию которого подкладывает Spring).&lt;br /&gt;
* Или хотя бы доделать SQL builder (SqlBuilder) и SQL Service (SqlService), потому что они сейчас не позволяют делать запросы с LEFT JOIN и WITH RECURSIVE.&lt;br /&gt;
* В таком случае было бы хорошо реализовывать код репозиториев с использованием одного универсального парсера из ResultSet в бины (при этом он должен работать по принципу fail-fast, а не как Dynamic.assign(Object bean, DynamicPropertySet dynamicProperties), который игнорирует все ошибки).&lt;br /&gt;
&lt;br /&gt;
==Сборка BeanExplorer5==&lt;br /&gt;
См. [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]].&lt;br /&gt;
&lt;br /&gt;
==BeanExplorer5 API==&lt;br /&gt;
См. [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BeanExplorer5]]&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/BeanExplorer5</id>
		<title>BeanExplorer5</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/BeanExplorer5"/>
				<updated>2017-02-27T11:42:49Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Это основная статья о BeanExplorer5.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку эта основная статья недописана, остальная её часть для тех, кто будет дорабатывать BeanExplorer5, а не использовать.&lt;br /&gt;
&lt;br /&gt;
==Концепции и технологии==&lt;br /&gt;
&lt;br /&gt;
Основные технологии, которые мы используем - это Java, Java Servlet, OSGi, React, SystemJS, ES2015 через Babel.&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
&lt;br /&gt;
Основные frontend компоненты написаны на React, но могут быть написаны на чём угодно. Поскольку React - это лишь &amp;quot;V&amp;quot; из MVC, то часть функционала полноценного frontend framework было необходимо реализовать, и этот функционал находится в be5/be5-frontend/src/scripts/be5.js (или просто be5 - далее буду писать имена скриптов кратко). Это покрывает функционал routing, requests, frontend localization. Также полезный базовый функционал находится в be5/bus, be5/createStore, be5/createSimpleStore, be5/ext.&lt;br /&gt;
* bus - сообщения (брокер из паттерна pub/sub); например, bus.fire('DocumentChange', value), bus.listen('DocumentChange', value =&amp;gt; ...);&lt;br /&gt;
* ext - расширения;&lt;br /&gt;
* createStore - создание store для управления данными на frontend; позволяет подписаться на его изменения;&lt;br /&gt;
* createSimpleStore - создание store, полным состоянием которого является результат GET запроса.&lt;br /&gt;
&lt;br /&gt;
Необходимые части frontend подгружаются динамически с помощью SystemJS.&lt;br /&gt;
&lt;br /&gt;
JSX+ES2015 скрипты компилируются с помощью Babel при сборке проекта.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* frontend подготовлен, но не переведён на [https://github.com/reactjs/react-redux redux], а это необходимо для упрощения работы с React компонентами (без redux или Flux бывает довольно нетривиально управлять состоянием React компонентов);&lt;br /&gt;
* be5.js требует разделения на небольшие части, также, как выделены bus и ext;&lt;br /&gt;
* невозможно отказаться от компиляции ES2015, даже если она будет поддерживаться всеми браузерами. SystemJS проверяет наличие ES2015 синтаксиса в скриптах, и в случае его наличия пытается использовать транслятор в браузере, даже если явно указано, что транслятора нет.&lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* используйте [https://github.com/reactjs/react-redux redux], [https://facebook.github.io/react/docs/two-way-binding-helpers.html React two-way binding], [https://github.com/JedWatson/classnames React classNames].&lt;br /&gt;
&lt;br /&gt;
===Backend===&lt;br /&gt;
&lt;br /&gt;
Основные части API находятся в com.beanexplorer.enterprise.api. Проще всего начать знакомство с BE5, посмотрев на содержимое этого пакета и его подпакетов. В com.beanexplorer.enterprise.api.experimental.v1 хранятся маленькие полезности. Если они становятся не экспериментальными, а доказавшими полезность, можно переносить их в другие подпакеты api. v1 в названии пакета необходимо для поддержки разного API для одинакового функционала, если невозможно быстро отрефакторить код с экспериментальным функционалом или если хочется проверить, какой подход окажется полезнее.&lt;br /&gt;
&lt;br /&gt;
Сердце всего BE5 - это ServiceProvider. ServiceProvider доступен компонентам, а в конструкторы сервисов инжектируются другие сервисы или сам ServiceProvider.&lt;br /&gt;
&lt;br /&gt;
Good practices:&lt;br /&gt;
* Разделяем модельные элементы на бины без логики, сервисы и репозитории.&lt;br /&gt;
* Презентационный код пишется в компонентах. Если в компоненте много строчек кода, то что-то пошло не так.&lt;br /&gt;
&lt;br /&gt;
Нерешённые проблемы:&lt;br /&gt;
* При написании operation почти любая строчка кода приводит к увеличению зависимости от наличия метаданных в БД, а также ухудшению возможности что либо протестировать, равно как и невозможности переиспользовать написанный код. Необходимо новое API для операций, полагающееся на сервисы - содержимого com.beanexplorer.enterprise.api.experimental и com.beanexplorer.enterprise.api.experimental.v1 недостаточно.&lt;br /&gt;
* Нет предусмотренного сетапа для тестирования.&lt;br /&gt;
* Нет API для запросов из БД, которое покрывает все возможные SQL запросы.&lt;br /&gt;
* Мы не избавились от метаданных в базе данных, поскольку BeanExplorer5 использует legacy код, который полагается на наличие метаданных в базе данных.&lt;br /&gt;
* Нет стандартного способа взять запрос из Query (той, что определена в YAML) и запустить его. Дело в том, что концептуально сейчас Query - это запросы, которые используются как запросы для таблиц, которые может увидеть пользователь. Такие запросы помечаются набором ролей, обладатели которых могут запускать запросы. Однако бывает необходимость описать запрос на BE-SQL и запустить его из Java. На мой взгляд не только роли должны игнорироваться, но и вообще такие запросы должны либо где-то в другом месте лежать (например, namedQueries.yaml), либо быть приписанными к Entity и не находиться в разделе queries, а, например, находиться в разделе &amp;quot;systemQueries&amp;quot; (причём поскольку это новые запросы, они никогда не должны попадать в БД, а быть только в in-memory meta/project; сейчас запустить обычную Query через BE-SQL игнорируя роли можно так: executorService.createExecutor(meta.getQueryIgnoringRoles(&amp;quot;entityName&amp;quot;, &amp;quot;queryName&amp;quot;), request).execute()). &lt;br /&gt;
&lt;br /&gt;
Tips на будущее:&lt;br /&gt;
* Можно ресширить функционал ServiceProvider добавлением способности обрабатывать аннотированные поля сервисов - это избавит от проблем обхода циклических зависимостей сервисов и написания boilderplate в конструкторах. Также возможно попробовать сэмулировать поведение из Spring Core или Google Guice - это бы позволило просто перйти на них при возможности (см. следующее).&lt;br /&gt;
* Можно даже использовать Google Guice или переиспользовать Spring Core, если найдётся хороший способ регистрации сервисов из разных OSGi модулей (сам BE5 и BE5 приложение - в разных OSGi модулях).&lt;br /&gt;
* В идеальном случае было бы хорошо не писать репозитории, да и сервисы для запросов - для этого есть Hibernate, реализации JPA и другие ORM. А ещё лучше - попробовать переиспользовать Spring Data (объявлять интерфейсы с методами, описывающими запрос, без необходимости писать сам код запроса - как personRepository.findByEmailAndActive(&amp;quot;email&amp;quot;, true) - вызов метода из интерфейса, реализацию которого подкладывает Spring).&lt;br /&gt;
* Или хотя бы доделать SQL builder (SqlBuilder) и SQL Service (SqlService), потому что они сейчас не позволяют делать запросы с LEFT JOIN и WITH RECURSIVE.&lt;br /&gt;
* В таком случае было бы хорошо реализовывать код репозиториев с использованием одного универсального парсера из ResultSet в бины (при этом он должен работать по принципу fail-fast, а не как Dynamic.assign(Object bean, DynamicPropertySet dynamicProperties), который игнорирует все ошибки).&lt;br /&gt;
&lt;br /&gt;
==Сборка BeanExplorer5==&lt;br /&gt;
См. [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]].&lt;br /&gt;
&lt;br /&gt;
==BeanExplorer5 API==&lt;br /&gt;
См. [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BeanExplorer5]]&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-02-27T11:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* BeanExplorer5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-02-27T11:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* BeanExplorer5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
* [[:Category:BeanExplorer5|Категория BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"/>
				<updated>2017-02-27T11:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: /* BeanExplorer5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== BeanExplorer4 ===&lt;br /&gt;
* [[BeanExplorer4]]&lt;br /&gt;
** [[Для разработчиков BE4]]&lt;br /&gt;
* [[Установка BeanExplorer4]] (для пользователей)&lt;br /&gt;
* [[Компиляция и запуск BeanExplorer4]] (для разработчиков)&lt;br /&gt;
* [[Сборка BE4 и BE-SQL]] (для разработчиков)&lt;br /&gt;
* [[Использование ant]]&lt;br /&gt;
* [[Поддержка СУБД]]&lt;br /&gt;
* [[Типы колонок]]&lt;br /&gt;
* [[Структура проекта]]&lt;br /&gt;
* [[Usecases|Usecases с картиночками]]&lt;br /&gt;
* [[JavaScript Debugger]]&lt;br /&gt;
* [[Extras]]&lt;br /&gt;
* [[Entity template|Шаблоны для сущностей]]&lt;br /&gt;
&lt;br /&gt;
=== Freemarker ===&lt;br /&gt;
* [[Freemarker]]&lt;br /&gt;
* [[Встроенные функции]]&lt;br /&gt;
* [[Макросы]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Пользовательские макросы]]&lt;br /&gt;
* [[Создание своих макросов]]&lt;br /&gt;
* [[Built-ins]]&lt;br /&gt;
&lt;br /&gt;
=== BeanExplorer5 ===&lt;br /&gt;
* [[:Category:BeanExplorer5|Категория BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5|BeanExplorer5]]&lt;br /&gt;
* [[BeanExplorer5 API|BeanExplorer5 API]]&lt;br /&gt;
* [[BE-SQL|SQL-диалект BeanExplorer5]]&lt;br /&gt;
* [[Сборка BeanExplorer5 проекта|Сборка BeanExplorer5 проекта]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Внешние ссылки ===&lt;br /&gt;
* BeanExplorer4 на Edge Wiki [https://sites.google.com/a/developmentontheedge.com/wiki/home/proektnaadokumentacia/beanexplorer4]&lt;br /&gt;
----&lt;br /&gt;
Количество статей в вики: '''[[:Special:Statistics|{{NUMBEROFARTICLES}}]]'''.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	<entry>
		<id>http://wiki.dote.ru/index.php/BE-SQL</id>
		<title>BE-SQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.dote.ru/index.php/BE-SQL"/>
				<updated>2017-02-27T11:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;Uuinnk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''BE-SQL''' — диалект SQL, который поддерживается BeanExplorer SQL Parser. Поддерживаются только запросы SELECT. Больше всего он похож на PostgreSQL, но некоторые конструкции из других диалектов тоже поддерживаются. Он также должен понимать различные BE-специфичные теги вроде &amp;lt;if&amp;gt;, &amp;lt;unless&amp;gt; и т. д. В данный момент находится в разработке: не все реальные запросы из проектов успешно разбираются BE-SQL.&lt;br /&gt;
&lt;br /&gt;
Соответствие FreeMarker-конструкций и BE-SQL конструкций:&lt;br /&gt;
&lt;br /&gt;
* chr(...) — CHR() или CHAR()&lt;br /&gt;
* concat(...) — CONCAT() или ||&lt;br /&gt;
* coalesce(...) — COALESCE() или IFNULL()&lt;br /&gt;
* round(...) — ROUND()&lt;br /&gt;
* length(...) — LENGTH() или LEN()&lt;br /&gt;
* lpad(...) — LPAD()&lt;br /&gt;
* replace(...) — REPLACE()&lt;br /&gt;
* substring(...) — SUBSTR() или SUBSTRING()&lt;br /&gt;
* if(...) — IF() (может транслироваться в предложение CASE WHEN ...)&lt;br /&gt;
* ?dateFormat — FORMAT_DATE()&lt;br /&gt;
* ?dateTimeFormat — FORMAT_DATETIME()&lt;br /&gt;
* ?dateFormatRus — FORMAT_DATE_RUS()&lt;br /&gt;
* ?asInt — CAST(x AS BIGINT), TO_NUMBER(x)&lt;br /&gt;
* ?asVarChar — CAST(x AS CHAR), CAST(x AS VARCHAR), TO_CHAR(x)&lt;br /&gt;
* ?asDate — CAST(x AS DATE), TO_DATE(x)&lt;br /&gt;
* ?asPK — CAST(x AS KEY), TO_KEY(x)&lt;br /&gt;
* ?lower — LOWER()&lt;br /&gt;
* ?upper — UPPER()&lt;br /&gt;
* ?monthStart — DATE_TRUNC('MONTH', x)&lt;br /&gt;
* ?yearStart — DATE_TRUNC('YEAR', x)&lt;br /&gt;
* ?year — YEAR(), EXTRACT(YEAR FROM x)&lt;br /&gt;
* ?month — MONTH(), EXTRACT(MONTH FROM x)&lt;br /&gt;
* ?day — DAY(), EXTRACT(DAY FROM x)&lt;br /&gt;
* ?indexOf — INSTR(string, subString) или POSITION(subString IN string)&lt;br /&gt;
* ?str — просто пишите в 'одинарных кавычках', экранируйте одинарную кавычку с помощью '\'&lt;br /&gt;
* ?quote — просто пишите в &amp;quot;двойных кавычках&amp;quot; или в `обратных кавычках`, оба варианта должны сработать и транслироваться при необходимости&lt;br /&gt;
* currentDateTime — CURRENT_TIMESTAMP или NOW()&lt;br /&gt;
* currentDate — CURRENT_DATE&lt;br /&gt;
* addMonths(date,mon) — ADD_MONTHS(date, mon)&lt;br /&gt;
* addDays(date, days) — ADD_DAYS(date, days)&lt;br /&gt;
* addMillis(date, ms) — ADD_MILLIS(date, ms)&lt;br /&gt;
* fromFakeTable — FROM DUAL или можно не писать FROM вообще&lt;br /&gt;
&lt;br /&gt;
Для ограничения количества записей можно просто писать SELECT ... LIMIT 1: это транслируется в соответствующий диалект SQL.&lt;br /&gt;
&lt;br /&gt;
=== Список всех поддерживаемых SQL-функций ===&lt;br /&gt;
&lt;br /&gt;
В скобках указываются синонимы&lt;br /&gt;
&lt;br /&gt;
 CONCAT, COALESCE (IFNULL), COUNT, SUM, MAX, MIN, SUBSTR (SUBSTRING), LENGTH (LEN), UPPER, LOWER, CHR (CHAR), TO_CHAR, TO_NUMBER, TO_DATE, TO_KEY,&lt;br /&gt;
 REPLACE, RTRIM, LTRIM, TRIM, LPAD, ROUND, TRUNC (TRUNCATE), INSTR (STRPOS), IF, NOW, FORMAT_DATE (=TO_CHAR(x, 'YYYY-MM-DD')), YEAR, MONTH, DAY, &lt;br /&gt;
 FORMAT_DATETIME (=TO_CHAR(x, 'YYYY-MM-DD HH24:MI:SS')), FORMAT_DATE_RUS (=TO_CHAR(x, 'DD.MM.YYYY')), FORMAT_DATE_RUS_SHORT (=TO_CHAR(x, 'DD.MM.YY')), &lt;br /&gt;
 FORMAT_MONTHYEAR(=TO_CHAR(x, 'month YYYY')), FORMAT_FMDAYMONTH, FORMAT_FMDAYMONTH, FORMAT_HOURMINUTE, FORMAT_DAY_OF_WEEK, FORMAT_YYYYMMDD,&lt;br /&gt;
 FORMAT_YYYYMM, DATE_TRUNC, POSITION, DATE_ADD, ADD_MONTHS, ADD_DAYS, ADD_MILLIS, LAST_DAY, TIMESTAMPDIFF, YEARDIFF, MONTHDIFF, DAYDIFF, HOURDIFF,&lt;br /&gt;
 MINUTEDIFF, SECONDDIFF, LEAST, GREATEST, GROUPING, ROW_NUMBER, RANK, RIGHT, LEFT, NULLIF, ABS, AVG, DECODE, TRANSLATE (DB2, Oracle, PostgreSQL),&lt;br /&gt;
 REGEXP_LIKE (MySQL, Oracle, PostgreSLQ), REGEXP_REPLACE (DB2, Oracle, PostgreSQL), STRING_AGG (с поддержкой DISTINCT: MySQL, PostgreSQL; без: DB2, Oracle).&lt;br /&gt;
&lt;br /&gt;
=== Функции для работы с датами и временем ===&lt;br /&gt;
&lt;br /&gt;
==== Форматирование даты ====&lt;br /&gt;
&lt;br /&gt;
Для форматирования даты в строку можно использовать &amp;lt;code&amp;gt;TO_CHAR(дата, &amp;lt;строка_формата&amp;gt;)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;DATE_FORMAT(дата, &amp;lt;строка_формата&amp;gt;)&amp;lt;/code&amp;gt;. Строка формата должна быть одной из предопределённых констант из списка, иначе будет ошибка:&lt;br /&gt;
&lt;br /&gt;
* 'YYYY-MM-DD' или '%Y-%m-%d' (также можно использовать функцию FORMAT_DATE())&lt;br /&gt;
* 'YYYY-MM-DD HH24:MI:SS' или '%Y-%m-%d %H:%i:%S' (также можно использовать функцию FORMAT_DATETIME())&lt;br /&gt;
* 'DD.MM.YYYY' или '%d.%m.%Y' (также можно использовать функцию FORMAT_DATE_RUS())&lt;br /&gt;
* 'DD.MM.YY' или '%d.%m.%y' (также можно использовать функцию FORMAT_DATE_RUS_SHORT())&lt;br /&gt;
* 'month YYYY' или '%M %Y' (также можно использовать функцию FORMAT_MONTHYEAR())&lt;br /&gt;
* 'FMDD.MM' или '%e.%c' (режим заполнения, также можно использовать функцию FORMAT_FMDAYMONTH())&lt;br /&gt;
* 'DD.MM' или '%d.%m' (также можно использовать функцию FORMAT_DAYMONTH())&lt;br /&gt;
* 'HH24:MI' или '%H:%i' (также можно использовать функцию FORMAT_HOURMINUTE())&lt;br /&gt;
* 'YYYYMMDD' или '%Y%m%d' (также можно использовать функцию FORMAT_YYYYMMDD())&lt;br /&gt;
* 'YYYYMM' или '%Y%m' (также можно использовать функцию FORMAT_YYYYMM())&lt;br /&gt;
* 'D' или '%w' (также можно использовать функцию FORMAT_DAY_OF_WEEK())&lt;br /&gt;
* 'YYYY' или '%Y'&lt;br /&gt;
* 'MM' или '%m'&lt;br /&gt;
* 'DD' или '%d'&lt;br /&gt;
&lt;br /&gt;
 SELECT NOW(), FORMAT_DATE(NOW());&lt;br /&gt;
 &lt;br /&gt;
 NOW                     FORMAT_DATE&lt;br /&gt;
 ----------------------- -----------&lt;br /&gt;
 2016-03-04 11:12:38.360 2016-03-04&lt;br /&gt;
&lt;br /&gt;
 SELECT NOW(), FORMAT_DATETIME(NOW());&lt;br /&gt;
 &lt;br /&gt;
 NOW                     FORMAT_DATETIME&lt;br /&gt;
 ----------------------- -------------------&lt;br /&gt;
 2016-03-04 11:12:38.360 2016-03-04 11:12:38&lt;br /&gt;
&lt;br /&gt;
 SELECT NOW(), FORMAT_DATE_RUS(NOW());&lt;br /&gt;
 &lt;br /&gt;
 NOW                     FORMAT_DATE_RUS&lt;br /&gt;
 ----------------------- ---------------&lt;br /&gt;
 2016-03-04 11:12:38.360 04.03.2016&lt;br /&gt;
&lt;br /&gt;
 SELECT NOW(), FORMAT_DATE_RUS_SHORT(NOW());&lt;br /&gt;
 &lt;br /&gt;
 NOW                     FORMAT_DATE_RUS_SHORT&lt;br /&gt;
 ----------------------- ---------------------&lt;br /&gt;
 2016-03-04 11:12:38.360 04.03.16&lt;br /&gt;
&lt;br /&gt;
 SELECT TO_CHAR(NOW(), 'YYYY');&lt;br /&gt;
 -&amp;gt; 2016&lt;br /&gt;
&lt;br /&gt;
Для получения числа, месяца или года заданной даты в виде числа используются функции &amp;lt;code&amp;gt;DAY(дата)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MONTH(дата)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;YEAR(дата)&amp;lt;/code&amp;gt; соответственно:&lt;br /&gt;
&lt;br /&gt;
 SELECT YEAR(CURRENT_DATE);&lt;br /&gt;
 -&amp;gt; 2016&lt;br /&gt;
&lt;br /&gt;
Аналогично можно использовать &amp;lt;code&amp;gt;EXTRACT(YEAR FROM CURRENT_DATE)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Разница между датами ====&lt;br /&gt;
&lt;br /&gt;
Для получения разницы между датами в годах, месяцах, днях, часах, минутах или секундах используются следующие функции:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;YEARDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;EXTRACT(YEAR FROM AGE(endDate, startDate))&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;MONTHDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;EXTRACT(MONTH FROM AGE(endDate, startDate)) + 12 * EXTRACT(YEAR FROM AGE(endDate, startDate))&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;DAYDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;EXTRACT(DAY FROM(endDate - startDate))&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;HOURDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;FLOOR(EXTRACT(EPOCH FROM(endDate - startDate)) / 3600)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;MINUTEDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;FLOOR(EXTRACT(EPOCH FROM(endDate - startDate)) / 60)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SECONDDIFF(startDate, endDate)&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;EXTRACT(EPOCH FROM(endDate - startDate))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 SELECT EXTRACT(YEAR FROM AGE('2015-05-01', '2013-02-01'));&lt;br /&gt;
 -&amp;gt; 2&lt;br /&gt;
&lt;br /&gt;
 SELECT YEARDIFF('2013-02-01', '2015-05-01');&lt;br /&gt;
 -&amp;gt; 2&lt;br /&gt;
&lt;br /&gt;
 SELECT MONTHDIFF('2013-02-01', '2015-05-01');&lt;br /&gt;
 -&amp;gt; 27&lt;br /&gt;
&lt;br /&gt;
Также можно использовать функцию &amp;lt;code&amp;gt;TIMESTAMPDIFF(&amp;lt;интервал&amp;gt;, startDate, endDate)&amp;lt;/code&amp;gt;, где в качестве интервала должно быть YEAR, MONTH, DAY, HOUR, MINUTE или SECOND.&lt;br /&gt;
&lt;br /&gt;
 SELECT TIMESTAMPDIFF(DAY, '2016-01-01', '2017-01-01');&lt;br /&gt;
 -&amp;gt; 366&lt;br /&gt;
&lt;br /&gt;
 SELECT TIMESTAMPDIFF(SECOND, '2016-01-01', '2016-01-02' );&lt;br /&gt;
 -&amp;gt; 86400&lt;br /&gt;
&lt;br /&gt;
==== Добавление интервала к дате ====&lt;br /&gt;
&lt;br /&gt;
Для добавления к дате месяцев, дней или миллисекунд используются функции &amp;lt;code&amp;gt;ADD_MONTHS(дата, количество)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ADD_DAYS(дата, количество)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ADD_MILLIS(дата, количество)&amp;lt;/code&amp;gt; соответственно:&lt;br /&gt;
&lt;br /&gt;
 SELECT CURRENT_DATE, ADD_MONTHS(CURRENT_DATE, 2);&lt;br /&gt;
 &lt;br /&gt;
 CURRENT_DATE ADD_MONTHS&lt;br /&gt;
 ------------ ----------&lt;br /&gt;
 2016-03-04   2016-05-04&lt;br /&gt;
&lt;br /&gt;
 SELECT CURRENT_DATE, ADD_DAYS(CURRENT_DATE, 7);&lt;br /&gt;
 &lt;br /&gt;
 CURRENT_DATE ADD_DAYS&lt;br /&gt;
 ------------ ----------&lt;br /&gt;
 2016-03-04   2016-03-11&lt;br /&gt;
&lt;br /&gt;
 SELECT NOW(), ADD_MILLIS(NOW(), 3000);&lt;br /&gt;
 &lt;br /&gt;
 NOW                     ADD_MILLIS&lt;br /&gt;
 ----------------------- ----------------------- &lt;br /&gt;
 2016-03-04 11:12:38.360 2016-03-04 11:12:41.360&lt;br /&gt;
&lt;br /&gt;
==== Последний день месяца ====&lt;br /&gt;
&lt;br /&gt;
Для получения последнего дня месяца используется функция &amp;lt;code&amp;gt;LAST_DAY(дата)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 SELECT CURRENT_DATE, LAST_DAY(CURRENT_DATE) &amp;quot;Last&amp;quot;, LAST_DAY(CURRENT_DATE) - CURRENT_DATE &amp;quot;Days Left&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 CURRENT_DATE Last       Days Left&lt;br /&gt;
 ------------ ---------- ---------&lt;br /&gt;
 2016-03-04   2016-03-31        27&lt;br /&gt;
&lt;br /&gt;
=== Список всех поддерживаемых операций ===&lt;br /&gt;
&lt;br /&gt;
 +, -, *, /, &amp;gt;, &amp;lt;, &amp;gt;=, &amp;lt;=, = (или ==), != (или &amp;lt;&amp;gt;), || (конкатенация строк), OR, AND (или &amp;amp;&amp;amp;), NOT (или !), LIKE, FLOOR, MOD (или %),&lt;br /&gt;
 &amp;amp; (побитовое и), | (побитовое или), ~ (соответствие регулярному выражению; MySQL, Oracle, PostgreSQL).&lt;br /&gt;
&lt;br /&gt;
=== Что точно не работает пока ===&lt;br /&gt;
&lt;br /&gt;
Использование этих возможностей скорее всего приведёт к ошибке валидации. В некоторых случаях к некорректному переформатированию в другом движке.&lt;br /&gt;
&lt;br /&gt;
* BE-теги &amp;lt;if&amp;gt;/&amp;lt;unless&amp;gt; в некоторых нетривиальных местах. Так как в BE-SQL строится синтаксическое дерево, подобные теги нельзя размещать где угодно. Точно работает &amp;lt;if&amp;gt;/&amp;lt;unless&amp;gt; в следующих местах:&lt;br /&gt;
** В списке колонок (&amp;lt;code&amp;gt;SELECT a, &amp;lt;if ...&amp;gt;b,&amp;lt;/if&amp;gt; c FROM table&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для UNION SELECT (&amp;lt;code&amp;gt;SELECT a FROM table &amp;lt;if ...&amp;gt;UNION SELECT b FROM table&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;, а также &amp;lt;code&amp;gt;&amp;lt;if ...&amp;gt;SELECT a FROM table UNION&amp;lt;/if&amp;gt; SELECT b FROM table&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для всего предложения FROM (&amp;lt;code&amp;gt;SELECT a &amp;lt;if ...&amp;gt;FROM table&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для всего предложения WHERE (&amp;lt;code&amp;gt;SELECT a FROM table &amp;lt;if ...&amp;gt;WHERE b = c&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для всего и в списке колонок внутри GROUP BY (&amp;lt;code&amp;gt;SELECT * FROM table GROUP BY a,&amp;lt;if ...&amp;gt;b, c,&amp;lt;/if&amp;gt; d&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для всего и в списке колонок внутри ORDER BY (&amp;lt;code&amp;gt;SELECT * FROM table ORDER BY a DESC &amp;lt;if ...&amp;gt;, b, c&amp;lt;/if&amp;gt;, d&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для одной (не самой первой) из веток CASE WHEN (&amp;lt;code&amp;gt;SELECT CASE WHEN x &amp;gt; 5 THEN 'a' &amp;lt;if ...&amp;gt;WHEN x &amp;gt; 10 THEN 'b'&amp;lt;/if&amp;gt;ELSE 'c' END FROM table&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для одного или нескольких предложений JOIN (&amp;lt;code&amp;gt;SELECT a FROM table &amp;lt;if ...&amp;gt;JOIN table2 ON (...) JOIN table3 ON (...)&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для фрагмента булевого выражения, начинающегося с AND или OR (&amp;lt;code&amp;gt;SELECT a FROM table WHERE x &amp;gt; 2 &amp;lt;if ...&amp;gt;AND y &amp;gt; 3&amp;lt;/if&amp;gt;&amp;lt;if ...&amp;gt;OR z &amp;gt; 4&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для фрагмента конкатенации строк через ||, начинающегося с || (&amp;lt;code&amp;gt;SELECT a || b &amp;lt;if ...&amp;gt;|| c || d&amp;lt;/if&amp;gt; || e&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Для простого выражения, обязательно с альтернативой (&amp;lt;code&amp;gt;SELECT a FROM table WHERE x &amp;gt; &amp;lt;if ...&amp;gt;5&amp;lt;else&amp;gt;6&amp;lt;/if&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Внутри строкового литерала (&amp;lt;code&amp;gt;'&amp;lt;a href=&amp;quot;/test?&amp;lt;if parameter='xyz'&amp;gt;xyz=true&amp;amp;&amp;lt;/if&amp;gt;abc=true&amp;quot;&amp;gt;'&amp;lt;/code&amp;gt;)&lt;br /&gt;
* genericRef, joinGenericRef&lt;br /&gt;
&lt;br /&gt;
=== Создание макросов ===&lt;br /&gt;
&lt;br /&gt;
Предусмотрена возможность создания собственных макросов. Определение макроса начинается с &amp;lt;code&amp;gt;MACRO&amp;lt;/code&amp;gt;. За ним идет имя макроса и список аргументов в скобках, который может состоять из обязательных и следующих за ними аргументов с заданным по умолчанию значением. В случае отсутствия аргументов скобки нужно оставить пустыми. Далее следуют выражения, которые будут подставляться при вызове макроса, в их числе могут быть другие макросы, подстановки параметров, условные выражения. Заканчивается определение ключевым словом &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 MACRO MY_MACRO(arg1, arg2='000000')&lt;br /&gt;
 CONCAT(SUBSTR(arg1, 1, 5 ), arg2)&lt;br /&gt;
 END&lt;br /&gt;
&lt;br /&gt;
Вызываются макросы как обычные функции:&lt;br /&gt;
&lt;br /&gt;
 SELECT MY_MACRO(code) FROM table t;&lt;br /&gt;
&lt;br /&gt;
Такой запрос будет преобразован в &amp;lt;code&amp;gt;SELECT CONCAT(SUBSTR(code, 1, 5 ), '000000') FROM table t&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Определение СУБД-специфичных функций ===&lt;br /&gt;
&lt;br /&gt;
Определение СУБД-специфичных функций начинается с &amp;lt;code&amp;gt;DBMS_TRANSFORM&amp;lt;/code&amp;gt;. За ним идет название функции и список аргументов в скобках. В случае отсутствия аргументов скобки необходимо оставить пустыми. Далее следует выражение &amp;lt;code&amp;gt;CASE&amp;lt;/code&amp;gt;, в котором в блоках &amp;lt;code&amp;gt;WHEN&amp;lt;/code&amp;gt; перечисляются СУБД, а в блоках &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt; указывается возвращаемое выражение при трансляции в соответствующую СУБД. Это выражение может содержать функции, которые не были определены ранее, однако это не сделает возможным их дальнейшее использование вне трансляции. Если функцию необходимо транслировать как есть, после &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt; указывается &amp;lt;code&amp;gt;AS IS&amp;lt;/code&amp;gt;. В блоке &amp;lt;code&amp;gt;WHEN&amp;lt;/code&amp;gt; ожидаются названия из списка: &amp;lt;code&amp;gt;'db2'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'mysql'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'oracle'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'postgres'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'sqlserver'&amp;lt;/code&amp;gt;. Если СУБД, в которую необходимо выполнить трансляцию функции, отсутствует во всех условиях &amp;lt;code&amp;gt;WHEN&amp;lt;/code&amp;gt;, произойдет ошибка. Заканчивается определение ключевым словом &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 DBMS_TRANSFORM LPAD(str, size, fill)&lt;br /&gt;
 CASE WHEN 'postgres', 'oracle', 'mysql', 'db2' THEN AS IS&lt;br /&gt;
      WHEN 'sqlserver' THEN RIGHT(REPLICATE(fill, size) + str, size)&lt;br /&gt;
 END&lt;br /&gt;
&lt;br /&gt;
Запрос &amp;lt;code&amp;gt;SELECT LPAD('lpad', 8, '0') FROM table t&amp;lt;/code&amp;gt; для DB2, MySQL, Oracle и PostgreSQL сохранит свой вид, а при трансляции в Microsoft SQL Server будет преобразован в &amp;lt;code&amp;gt;SELECT RIGHT(REPLICATE('0', 8) + 'lpad', 8)&amp;lt;/code&amp;gt; FROM table t.&lt;/div&gt;</summary>
		<author><name>Uuinnk</name></author>	</entry>

	</feed>