buildscript { ext.cubaVersion = '7.2.6' repositories { mavenLocal() maven { url 'https://repo.cuba-platform.com/content/groups/work' credentials { username(rootProject.hasProperty('repoUser') ? rootProject['repoUser'] : 'cuba') password(rootProject.hasProperty('repoPass') ? rootProject['repoPass'] : 'cuba123') } } maven { url "http://www.license4j.com/maven/" } } dependencies { classpath "com.haulmont.gradle:cuba-plugin:$cubaVersion" } } def modulePrefix = 'tms' def globalModule = project(":${modulePrefix}-global") def coreModule = project(":${modulePrefix}-core") def webModule = project(":${modulePrefix}-web") def servletApi = 'javax.servlet:javax.servlet-api:3.1.0' apply(plugin: 'cuba') cuba { artifact { group = 'com.cmobile.unifiedtms' version = '0.5' isSnapshot = false } } dependencies { appComponent("com.haulmont.cuba:cuba-global:$cubaVersion") appComponent('com.haulmont.addon.sdbmt:sdbmt-global:2.0.2') appComponent('com.haulmont.addon.helium:helium-global:0.2.0') appComponent('com.haulmont.addon.restapi:restapi-global:7.2.1') appComponent('com.haulmont.addon.dashboard:dashboard-global:3.2.2') appComponent("com.haulmont.charts:charts-global:$cubaVersion") appComponent("com.haulmont.fts:fts-global:$cubaVersion") appComponent('com.haulmont.addon.emailtemplates:yet-global:1.4.2') appComponent('de.diedavids.cuba.dataimport:dataimport-global:0.14.1') appComponent('com.cmobile.unifiedtms.ext:tmsext-global:0.2') appComponent('ar.com.osmosys.pswdplus:pswdplus-global:1.1.0') } def postgres = 'org.postgresql:postgresql:42.2.9' configure([globalModule, coreModule, webModule]) { apply(plugin: 'java') apply(plugin: 'maven') apply(plugin: 'cuba') dependencies { testCompile('org.junit.jupiter:junit-jupiter-api:5.5.2') testCompile('org.junit.jupiter:junit-jupiter-engine:5.5.2') testCompile('org.junit.vintage:junit-vintage-engine:5.5.2') } task sourceJar(type: Jar) { from file('src') classifier = 'sources' } artifacts { archives sourceJar } test { useJUnitPlatform() } } configure(globalModule) { dependencies { if (!JavaVersion.current().isJava8()) { runtime('javax.xml.bind:jaxb-api:2.3.1') runtime('org.glassfish.jaxb:jaxb-runtime:2.3.1') } compileOnly(servletApi) compile 'com.pras:apk-manifest:1.0' compile 'com.license4j:license4j-runtime-library:4.7.3' } entitiesEnhancing { main { enabled = true } } jar { manifest { attributes('App-Component-Id': cuba.artifact.group) attributes('App-Component-Version': cuba.artifact.version + (cuba.artifact.isSnapshot ? '-SNAPSHOT' : '')) } } } configure(coreModule) { configurations { jdbc dbscripts } dependencies { compile(globalModule) compileOnly(servletApi) jdbc(postgres) testRuntime(postgres) compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4' compile 'com.google.code.gson:gson:2.8.6' compile 'com.pras:apk-manifest:1.0' compile 'com.license4j:license4j-runtime-library:4.7.3' runtime 'com.license4j:license4j-runtime-library:4.7.3' compile 'commons-net:commons-net:3.8.0' runtime 'commons-net:commons-net:3.8.0' compile 'com.jcraft:jsch:0.1.55' runtime 'com.jcraft:jsch:0.1.55' } task cleanConf(description: 'Cleans up conf directory', type: Delete) { delete "$cuba.appHome/${modulePrefix}-core/conf" } task deploy(dependsOn: [assemble, cleanConf], type: CubaDeployment) { appName = "${modulePrefix}-core" appJars(modulePrefix + '-global', modulePrefix + '-core') } task createDb(dependsOn: assembleDbScripts, description: 'Creates local database', type: CubaDbCreation) { } task updateDb(dependsOn: assembleDbScripts, description: 'Updates local database', type: CubaDbUpdate) { } } configure(webModule) { configurations { webcontent } dependencies { compileOnly(servletApi) compile(globalModule) compile 'com.pras:apk-manifest:1.0' compile 'com.license4j:license4j-runtime-library:4.7.3' runtime 'com.license4j:license4j-runtime-library:4.7.3' } task webArchive(type: Zip) { from file("$buildDir/web") from file('web') classifier = 'web' } artifacts { archives webArchive } task deployConf(type: Copy) { from file('src') include "com/cmobile/unifiedtms/**" into "$cuba.appHome/${modulePrefix}/conf" } task clearMessagesCache(type: CubaClearMessagesCache) { appName = "${modulePrefix}" } deployConf.dependsOn clearMessagesCache task cleanConf(description: 'Cleans up conf directory', type: Delete) { delete "$cuba.appHome/${modulePrefix}/conf" } task deploy(dependsOn: [assemble, cleanConf], type: CubaDeployment) { appName = "${modulePrefix}" appJars(modulePrefix + '-global', modulePrefix + '-web') } task buildScssThemes(type: CubaWebScssThemeCreation) task deployThemes(type: CubaDeployThemeTask, dependsOn: buildScssThemes) assemble.dependsOn buildScssThemes task themesJar(type: Jar) { from file('themes') classifier = 'themes' } artifacts { archives themesJar } } task undeploy(type: Delete, dependsOn: ":${modulePrefix}-web:cleanConf") { delete("$cuba.tomcat.dir/shared") delete("$cuba.tomcat.dir/webapps/${modulePrefix}-core") delete("$cuba.tomcat.dir/webapps/${modulePrefix}") } task restart(dependsOn: ['stop', ":${modulePrefix}-core:deploy", ":${modulePrefix}-web:deploy"], description: 'Redeploys applications and restarts local Tomcat') { doLast { ant.waitfor(maxwait: 6, maxwaitunit: 'second', checkevery: 2, checkeveryunit: 'second') { not { socket(server: 'localhost', port: '8787') } } } } restart.finalizedBy start task buildWar(type: CubaWarBuilding) { appProperties = ['cuba.automaticDatabaseUpdate': true] includeJdbcDriver = true logbackConfigurationFile = 'etc/war-logback.xml' webXmlPath = 'modules/web/web/WEB-INF/single-war-web.xml' }