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') } } } dependencies { classpath "com.haulmont.gradle:cuba-plugin:$cubaVersion" } } def modulePrefix = 'tmsext' 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.ext' version = '0.2' isSnapshot = false } tomcat { dir = "$project.rootDir/deploy/tomcat" } } dependencies { appComponent("com.haulmont.cuba:cuba-global:$cubaVersion") } def postgres = 'org.postgresql:postgresql:42.2.9' configure([globalModule, coreModule, webModule]) { apply(plugin: 'java') apply(plugin: 'maven') apply(plugin: 'cuba') dependencies { testCompile('junit:junit:4.12') } task sourceJar(type: Jar) { from file('src') classifier = 'sources' } artifacts { archives sourceJar } } 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') } } 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.apache.poi:poi-ooxml:4.1.1') } 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) { dbms = 'postgres' host = 'localhost:5432' dbName = 'tms' dbUser = 'postgres' dbPassword = 'postgres' } task updateDb(dependsOn: assembleDbScripts, description: 'Updates local database', type: CubaDbUpdate) { dbms = 'postgres' host = 'localhost:5432' dbName = 'tms' dbUser = 'postgres' dbPassword = 'postgres' } } configure(webModule) { configurations { webcontent } dependencies { compileOnly(servletApi) compile(globalModule) } 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/ext/**" 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