Секция 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, «Отладка виджетов в веб-браузере» для получения информации о том как отлаживать код в веб-браузере.