Секция allprojects задает группу и версию собираемых артефактов
проекта. Имена артефактов формируются на основе имен модулей, заданных в settings.gradle.
Если свойство ext.isSnapshot равно true, то в именах артефактов будет присутствовать
суффикс SNAPSHOT. Свойство ext.tomcatDir задает расположение каталога
установки Tomcat. Кроме того, в секции
allprojects могут быть заданы следующие опциональные свойства:
-
ext.copyright- текст Copyright Notice, вставляемый IntelliJ IDEA в файлы исходных текстов. -
ext.vcs- тип используемой в проекте VCS. Если данное свойство указано, то в сгенерированных проектных файлах IntelliJ IDEA будет установлен параметр интеграции с данной VCS. Возможные значения:svn,Git. -
ext.uploadUrl- URL репозитория, в который будут выгружатся собранные артефакты проекта при выполнении задачиuploadArchives. По умолчанию используется репозиторий Haulmont. -
ext.uploadUser- имя пользователя репозитория для выгрузки собранных артефактов проекта. По умолчанию используется значение переменной окруженияHAULMONT_REPOSITORY_USER. -
ext.uploadPassword- пароль пользователя репозитория для выгрузки собранных артефактов проекта. По умолчанию используется значение переменной окруженияHAULMONT_REPOSITORY_PASSWORD. -
Свойства
ext.tomcatPort,ext.tomcatShutdownPortиext.tomcatDebugPortоказывают влияние на задачуsetupTomcat(см. ниже) и могут быть использованы для установки Tomcat с нестандартными портами.
Любое из свойств проекта можно задать не в самом build.gradle, а путем передачи в командной строке аргумента с префиксом -P, например:
gradlew uploadArchives -PuploadUser=myuser -PuploadPassword=mypassword
В секции buildscript выполняется следующее:
-
Задается версия базовых проектов платформы, на которой основан данный проект.
-
Задается набор репозиториев, из которых будут загружаться зависимости проекта. В качестве имени и пароля для доступа к репозиторию зависимостей используются либо значения свойств проекта
repoUserиrepoPass, либо стандартные значения, явно указанные в скрипте сборки. Как и другие свойства проекта,repoUserиrepoPassможно передать в командной строке в аргументах-P. -
Объявляется зависимость от плагина cuba-plugin, в котором сосредоточена специфика сборки проектов на платформе. Плагин подключается далее в конфигурацию сборки модулей с помощью метода
apply(plugin: 'cuba')
Далее в секциях configure определяются параметры сборки модулей приложения.
Исполняемыми единицами в Gradle являются задачи (tasks). Они задаются как внутри плагинов, так и в самом скрипте сборки. Рассмотрим специфические для CUBA задачи, параметры
которых могут быть сконфигурированы в build.gradle.
-
enhance- задача типаCubaEnhancing, выполняющая bytecode enhancement классов персистентных сущностей. Объявляется в модуле global. В параметре задачиpersistenceXmlуказывается путь к файлуpersistence.xmlпроекта.Например:
task enhance(type: CubaEnhancing) { persistenceXml = "${globalModule.projectDir}/src/persistence.xml" } -
enhanceTransient- задача типаCubaEnhanceTransient, выполняющая bytecode enhancement классов неперсистентных сущностей. В параметре задачиmetadataXmlуказывается путь к файлуmetadata.xmlпроекта.Например:
task enhanceTransient(type: CubaEnhanceTransient) { metadataXml = "${globalModule.projectDir}/src/metadata.xml" } -
setupTomcat- задача типаCubaSetupTomcat, выполняющая установку и инициализацию локального сервера Tomcat для последующего быстрого развертывания приложения. Эта задача автоматически добавляется в проект при подключении плагина сборки cuba, поэтому объявлять ее вbuild.gradleне нужно. Каталог установки Tomcat задается свойствомext.tomcatDirв секцииallprojects. По умолчанию это подкаталогbuild/tomcatпроекта. -
deploy- задача типаCubaDeployment, выполняющая быстрое развертывание модуля в Tomcat. Объявляется в модулях core, web, portal. Параметры:-
appName- имя веб-приложения, которое будет создано из модуля. Фактически это имя подкаталога внутриtomcat/webapps. -
jarNames- список имен JAR файлов (без версии), получающихся в результате сборки модуля, которые надо поместить в каталогWEB-INF/libвеб-приложения. Все остальные артефакты модуля и зависимостей будут записаны вtomcat/shared/lib.
Например:
task deploy(dependsOn: assemble, type: CubaDeployment) { appName = 'app-core' jarNames = ['cuba-global', 'cuba-core', 'app-global', 'app-core'] } -
-
buildWar- задача типаCubaWarBuilding, выполняющая сборку модуля в WAR-файл. Может быть объявлена в модулях core, web, portal, если требуется развертывание приложения в WAR. Собранные WAR-файлы находятся в подкаталогахbuild/distributionsмодулей.Параметры задачи:
-
appName- имя результирующего WAR-файла. -
appHome- путь к домашнему каталогу приложения. В домашнем каталоге будут располагаться файл конфигурации логгирования; каталог скриптов базы данных; конфигурационный, временный и рабочий каталоги приложения.В параметре
appHomeможно указать как абсолютный путь к домашнему каталогу, так и системную переменную, которая должна быть задана при запуске сервера. Например:appHome = '/work/sales_home'илиappHome = '${app.home}' -
appProperties- мэп свойств, которые будут записаны в файлWEB-INF/local.app.propertiesв дополнение к определенным в самой задаче. По умолчанию задачаbuildWarсоздает данный файл и определяет в нем свойстваcuba.logDir,cuba.confDir,cuba.tempDir,cuba.dataDirдля работы с домашним каталогом приложения, упомянутым выше. Кроме того, для приложения среднего слоя задается параметрcuba.dataSourceJndiName = jdbc/CubaDS
а для приложения веб-клиента параметры
cuba.connectionUrlList = http://localhost:8080/${appName}-core cuba.useLocalServiceInvocation = false
Пример задачи в модуле web:
task buildWar(dependsOn: assemble, type: CubaWarBuilding) { appName = 'app' appHome = '${app.home}' appProperties = ['cuba.connectionUrlList': 'http://server/app-core'] } -
-
createWarDistr- задача типаCubaWarDistribution, выполняющая подготовку дистрибутива, включающего в себя WAR-файлы приложений и их домашний каталог. Задача обязательно должна зависеть от задачbuildWarмодулей, и имеет следующие параметры:-
appHome- путь к домашнему каталогу приложения (подробнее см. описание задачиbuildWar). -
distrDir- путь к каталогу, в который копируется содержимое дистрибутива. Это необязательный параметр, по умолчанию используется подкаталогbuild/warпроекта.
Пример описания задачи:
task createWarDistr(dependsOn: [coreModule.buildWar, webModule.buildWar], type: CubaWarDistribution) { appHome = '${app.home}' } -
-
createDb- задача типаCubaDbCreation, создающая базу данных приложения путем выполнения соответствующих скриптов. Объявляется в модуле core. Параметры:-
dbms- тип СУБД, см. Раздел 4.3.1, «Типы СУБД». -
dbName- имя базы данных. -
dbUser- имя пользователя СУБД. -
dbPassword- пароль пользователя СУБД. -
host- хост и, опционально, порт СУБД в форматеhost[:port]. Если не задан, используетсяlocalhost. -
masterUrl- URL для подключения при создании БД. Если не задан, используется значение по умолчанию, зависящее от типа СУБД и параметраhost. -
dropDbSql- команда SQL для удаления БД. Если не задана, используется значение по умолчанию, зависящее от типа СУБД. -
createDbSql- команда SQL для создания БД. Если не задана, используется значение по умолчанию, зависящее от типа СУБД. -
driverClasspath- список JAR файлов, содержащих JDBC драйвер. Элементы списка разделяются символом ":" на Linux и символом ";" на Windows. Если не задан, используются зависимости, входящие в конфигурациюjdbcданного модуля. Явное заданиеdriverClasspathактуально при использовании Oracle, т.к. его JDBC драйвер не присутствует в зависимостях. -
oracleSystemPassword- при использовании Oracle пароль пользователя SYSTEM.
Пример для PostgreSQL:
task createDb(dependsOn: assemble, description: 'Creates local database', type: CubaDbCreation) { dbms = 'postgres' dbName = 'sales' dbUser = 'cuba' dbPassword = 'cuba' }Пример для MS SQL Server:
task createDb(dependsOn: assemble, description: 'Creates local database', type: CubaDbCreation) { dbms = 'mssql' dbName = 'sales' dbUser = 'sa' dbPassword = 'saPass1' }Пример для Oracle:
task createDb(dependsOn: assemble, description: 'Creates database', type: CubaDbCreation) { dbms = 'oracle' host = '192.168.1.10' dbName = 'orcl' dbUser = 'sales' dbPassword = 'sales' oracleSystemPassword = 'manager' driverClasspath = "$tomcatDir/lib/ojdbc6.jar" } -
-
updateDb- задача типаCubaDbUpdate, обновляющая базу данных приложения путем выполнения соответствующих скриптов. Аналогична задачеcreateDb, за исключением отсутствия параметровdropDbSqlиcreateDbSql. -
startDb- задача типаCubaHsqlStart, выполняющая запуск локального сервера HSQLDB. Параметры:-
dbName- имя базы данных, по умолчаниюcubadb. -
dbDataDir- каталог, в котором размещена база данных, по умолчанию подкаталогdataпроекта. -
dbPort- порт сервера, по умолчанию 9001.
Например:
task startDb(type: CubaHsqlStart) { dbName = 'sales' } -
-
stopDb- задача типаCubaHsqlStop, выполняющая остановку локального сервера HSQLDB. Параметры аналогичны задачеstartDb. -
start- задача типаCubaStartTomcat, выполняющая запуск локального сервера Tomcat, установленного задачей setupTomcat. Эта задача автоматически добавляется в проект при подключении плагина cuba, поэтому объявлять ее вbuild.gradleне нужно. -
stop- задача типаCubaStopTomcat, выполняющая остановку локального сервера Tomcat, установленного задачей setupTomcat. Эта задача автоматически добавляется в проект при подключении плагина cuba, поэтому объявлять ее вbuild.gradleне нужно. -
restart- задача, выполняющая остановку, быстрое развертывание, и старт локального сервера Tomcat. -
debugWidgetSet- задача типаCubaWidgetSetDebug, которая запускает GWT Code Server для отладки виджетов в веб-браузере.Пример использования:
task debugWidgetSet(type: CubaWidgetSetDebug) { widgetSetClass = 'com.haulmont.cuba.web.toolkit.ui.WidgetSet' }Убедитесь, что кофигурация
runtimeмодуляweb-toolkitсодержит зависимость от библиотеки Servlet API:configure(webToolkitModule) { dependencies { runtime(servletApi) } ...См. Раздел 5.7.2, «Отладка виджетов в веб-браузере» для получения информации о том как отлаживать код в веб-браузере.

