cuba/build.gradle

1149 lines
34 KiB
Groovy
Raw Normal View History

2011-12-07 19:01:29 +08:00
/*
2016-03-16 21:26:06 +08:00
* Copyright (c) 2008-2016 Haulmont.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
2013-09-24 19:00:49 +08:00
*/
2011-11-17 16:31:31 +08:00
buildscript {
2018-05-31 19:26:30 +08:00
ext.cubaVersion = '7.0-SNAPSHOT'
2013-09-24 19:00:49 +08:00
ext.cubaVersion = rootProject.hasProperty('buildVersion') ? rootProject['buildVersion'] : cubaVersion
println("CUBA Platform Version ${ext.cubaVersion}")
println("")
2011-11-17 16:31:31 +08:00
repositories {
mavenLocal()
maven {
credentials {
2016-03-24 17:39:31 +08:00
username System.getenv('HAULMONT_REPOSITORY_USER') ?: 'cuba'
password System.getenv('HAULMONT_REPOSITORY_PASSWORD') ?: 'cuba123'
2011-11-17 16:31:31 +08:00
}
url System.getenv('HAULMONT_REPOSITORY_URL') ?: 'https://repo.cuba-platform.com/content/groups/work'
2011-11-17 16:31:31 +08:00
}
}
dependencies {
2013-09-24 19:00:49 +08:00
classpath group: 'com.haulmont.gradle', name: 'cuba-plugin', version: cubaVersion
2011-11-17 16:31:31 +08:00
}
}
2012-02-21 16:18:28 +08:00
apply(plugin: 'base')
2012-03-07 22:30:40 +08:00
apply(plugin: 'maven')
2011-11-17 16:31:31 +08:00
apply(plugin: 'idea')
apply(plugin: 'cuba')
bom.load file('modules/global/src/com/haulmont/cuba/bom.properties')
cuba {
artifact {
group = 'com.haulmont.cuba'
version = project.cubaVersion.replace('-SNAPSHOT', '')
isSnapshot = project.cubaVersion.endsWith('-SNAPSHOT')
}
ide {
vcs = 'Git'
copyright = '''Copyright (c) 2008-$today.year Haulmont.
2016-03-16 19:16:50 +08:00
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.'''
}
}
2011-11-17 16:31:31 +08:00
def sharedLibModule = project(':cuba-shared-lib')
def globalModule = project(':cuba-global')
def coreModule = project(':cuba-core')
def clientModule = project(':cuba-client')
def guiModule = project(':cuba-gui')
def desktopModule = project(':cuba-desktop')
def portalModule = project(':cuba-portal')
def restApiModule = project(':cuba-rest-api')
2018-03-07 21:24:37 +08:00
def webWidgetsModule = project(':cuba-web-widgets')
2013-10-19 18:40:54 +08:00
def webToolkitModule = project(':cuba-web-toolkit')
def webModule = project(':cuba-web')
def idpModule = project(':cuba-idp')
2017-03-29 15:34:56 +08:00
def uberJarModule = project(':cuba-uberjar')
def frontModule = project(':cuba-front')
2011-11-17 16:31:31 +08:00
def webModuleThemesModule = project(':cuba-web-themes')
def coreTestsModule = project(':cuba-core-tests')
def clientTestsModule = project(':cuba-client-tests')
configure([sharedLibModule, globalModule, coreModule, clientModule, guiModule,
webModule, desktopModule, portalModule, restApiModule, idpModule, uberJarModule, frontModule]) {
2011-11-17 16:31:31 +08:00
apply(plugin: 'java')
2017-09-19 14:07:44 +08:00
apply(plugin: 'groovy')
2011-11-17 16:31:31 +08:00
apply(plugin: 'idea')
apply(plugin: 'maven')
apply(plugin: 'cuba')
// code quality
apply(plugin: 'findbugs')
apply(plugin: 'pmd')
2011-11-17 16:31:31 +08:00
dependencies {
2016-11-09 18:38:05 +08:00
testCompile(bom['org.jmockit:jmockit'])
testCompile(bom['junit:junit'])
2017-09-19 14:07:44 +08:00
testCompile(bom['org.spockframework:spock-core']) {
exclude(group: 'org.codehaus.groovy', module: 'groovy-all')
}
}
sourceSets {
test {
2017-11-24 16:44:36 +08:00
java {
include '**/testmodel/**'
}
2017-09-19 14:07:44 +08:00
groovy {
2017-11-24 16:44:36 +08:00
exclude '**/testmodel/**'
2017-09-19 14:07:44 +08:00
srcDir 'test'
}
}
2011-11-17 16:31:31 +08:00
}
task sourceJar(type: Jar) {
from file('src')
classifier = 'sources'
}
artifacts {
archives sourceJar
}
jar {
manifest {
attributes("Implementation-Version": cubaVersion)
}
}
test {
maxHeapSize = '256m'
2018-05-23 19:52:31 +08:00
systemProperties = [
'jdk.attach.allowAttachSelf' : 'true',
'logback.configurationFile': System.getProperty('logback.configurationFile')
2018-05-23 19:52:31 +08:00
]
}
javadoc {
// move to plugin ?
options.addStringOption("sourcepath", "")
}
findbugs {
toolVersion = "3.0.1"
ignoreFailures = false
omitVisitors = ['FindDoubleCheck']
excludeFilter = rootProject.file("findbugs/exclude-filter.xml")
effort = "max"
reportLevel = "high"
}
findbugsMain {
reports {
xml.enabled = false
html {
enabled = true
stylesheet = rootProject.resources.text.fromFile("findbugs/fancy-hist.xsl")
2017-10-01 02:56:00 +08:00
destination file("${project.buildDir}/reports/findbugs/${project.name}.html")
}
}
}
findbugsTest {
reports {
xml.enabled = false
html {
enabled = true
stylesheet = rootProject.resources.text.fromFile("findbugs/fancy-hist.xsl")
2017-10-01 02:56:00 +08:00
destination file("${project.buildDir}/reports/findbugs/test-${project.name}.html")
}
}
}
pmd {
ignoreFailures = true
sourceSets = [sourceSets.main]
reportsDir = file("${project.buildDir}/reports/pmd")
ruleSets = [
"java-basic",
"java-braces",
"java-design",
"java-unusedcode"
]
}
pmdMain {
excludes = [
"**/JPAParser.java",
"**/JPA2Parser.java"
]
reports {
xml.enabled = true
html.enabled = false
}
source project.fileTree("src")
}
task pmdReport(dependsOn: pmdMain, group: 'verification', description:
'Generates a HTML report after executing PMD checks.') {
doLast {
ant.xslt(
2018-08-10 19:41:06 +08:00
'in': "${project.buildDir}/reports/pmd/main.xml",
'style': "${rootDir}/findbugs/pmd-nicerhtml.xsl",
'out': "${project.buildDir}/reports/pmd/main.html")
}
}
check {
dependsOn += ['pmdReport']
}
}
// Jacoco
2018-05-23 19:52:31 +08:00
//configure([sharedLibModule, globalModule, coreModule, clientModule, guiModule, webModule]) {
// apply(plugin: 'jacoco')
//
// jacoco {
// toolVersion = "0.8.0"
// }
//
// jacocoTestReport {
// reports {
// xml.enabled = true
// html.enabled = true
// }
//
// afterEvaluate {
// // without enhanced-classes output
// classDirectories = files(new File(project.buildDir, 'classes/java/main'))
// }
// }
//
// if (rootProject.hasProperty('jacocoTeamcity')) {
// jacocoTestReport.doLast {
// println "##teamcity[jacocoReport dataPath='modules/${project.projectDir.name}/build/jacoco/test.exec' " +
// "includes='com.haulmont.cuba.*' " +
// "classpath='+:modules/${project.projectDir.name}/build/classes/java/main/**']"
// }
// }
//}
2011-11-17 16:31:31 +08:00
2016-11-09 18:38:05 +08:00
// configure web toolkit module
2018-03-07 21:24:37 +08:00
configure([webWidgetsModule, webToolkitModule]) {
apply(plugin: 'java')
apply(plugin: 'idea')
apply(plugin: 'maven')
apply(plugin: 'cuba')
task sourceJar(type: Jar) {
from file('src')
classifier = 'sources'
}
artifacts {
archives sourceJar
}
javadoc {
// move to plugin ?
options.addStringOption("sourcepath", "")
}
}
2011-11-17 16:31:31 +08:00
configure(sharedLibModule) {
dependencies {
2016-11-09 18:38:05 +08:00
compile(bom['ch.qos.logback:logback-classic'])
compile(bom['org.slf4j:log4j-over-slf4j'])
jdbc(bom['org.postgresql:postgresql'])
jdbc(bom['org.hsqldb:hsqldb'])
2011-11-17 16:31:31 +08:00
}
}
configure(globalModule) {
2011-11-22 19:42:09 +08:00
dependencies {
compile(bom['org.codehaus.groovy:groovy'])
compile(bom['org.codehaus.groovy:groovy-templates'])
compile(bom['org.codehaus.groovy:groovy-sql'])
2016-11-09 18:38:05 +08:00
compile(bom['org.apache.commons:commons-lang3']) // simplify version management with reports and bpm
compile(bom['org.apache.commons:commons-collections4'])
compile(bom['org.apache.commons:commons-text'])
2016-11-09 18:38:05 +08:00
compile(bom['commons-io:commons-io'])
compile(bom['commons-cli:commons-cli'])
compile(bom['commons-codec:commons-codec'])
2016-11-09 18:38:05 +08:00
compile(bom['org.apache.httpcomponents:httpclient']) // simplify version management for selenium
compile(bom['org.apache.commons:commons-pool2'])
compile(bom['org.apache.commons:commons-compress'])
2018-05-23 19:52:31 +08:00
compile(bom['org.dom4j:dom4j'])
compile(bom['xml-apis:xml-apis']) // simplify version management with core
compile(bom['javax.activation:activation']) // simplify version management with core
2016-11-09 18:38:05 +08:00
compile(bom['com.sun.mail:javax.mail'])
compile(bom['ch.qos.logback:logback-classic'])
compile(bom['org.slf4j:log4j-over-slf4j'])
compile(bom['org.perf4j:perf4j'])
compile(bom['com.google.code.findbugs:jsr305'])
compile(bom['javax:javaee-api'])
2018-05-23 19:52:31 +08:00
compile(bom['javax.xml.bind:jaxb-api'])
compile(bom['org.glassfish.jaxb:jaxb-runtime'])
2016-11-09 18:38:05 +08:00
compile(bom['antlr:antlr'])
compile(bom['org.antlr:antlr-runtime'])
compile(bom['com.google.guava:guava'])
2018-05-23 19:52:31 +08:00
compile(bom['org.eclipse.persistence:org.eclipse.persistence.jpa'])
compile(bom['org.eclipse.persistence:org.eclipse.persistence.oracle'])
2016-11-09 18:38:05 +08:00
compile(bom['org.freemarker:freemarker'])
compile(bom['org.springframework:spring-core'])
compile(bom['org.springframework:spring-beans'])
compile(bom['org.springframework:spring-context'])
compile(bom['org.springframework:spring-web'])
compile(bom['com.esotericsoftware:kryo-shaded'])
compile(bom['de.javakaffee:kryo-serializers']) {
exclude(group: 'com.esotericsoftware', module: 'kryo')
}
compile(bom['org.json:json'])
compile(bom['com.google.code.gson:gson'])
2016-11-25 21:26:57 +08:00
compile(bom['org.hibernate:hibernate-validator'])
compile(bom['org.glassfish.web:javax.el'])
2016-11-09 18:38:05 +08:00
compileOnly(bom['javax.servlet:javax.servlet-api'])
2011-11-22 19:42:09 +08:00
}
task generateReleaseTimestamp(type: CubaReleaseTimeStamp) {
releaseTimeStampPath = "$buildDir/release-number/com/haulmont/cuba/core/global/release.timestamp"
releaseNumberPath = "$buildDir/release-number/com/haulmont/cuba/core/global/release.number"
}
// do not use classes directory, because it will break Gradle task UP-TO-DATE caching
jar {
from new File(project.buildDir, 'release-number')
2011-11-17 16:31:31 +08:00
}
2013-04-09 18:15:55 +08:00
entitiesEnhancing {
main {
enabled = true
}
}
task filterDummyEntities {
2016-07-19 22:23:11 +08:00
ext.srcFile1 = file('src/base-persistence.xml')
ext.srcFile2 = file('src/cuba-persistence.xml')
ext.dstDir = file("$buildDir/tmp/filtered")
2016-07-19 22:23:11 +08:00
ext.dstFile1 = new File(ext.dstDir, "base-persistence.xml")
ext.dstFile2 = new File(ext.dstDir, "cuba-persistence.xml")
inputs.file srcFile1
inputs.file srcFile2
outputs.file dstFile1
outputs.file dstFile2
doLast {
dstDir.mkdirs()
2016-07-19 22:23:11 +08:00
dstFile1.write(srcFile1.readLines().findAll{ !it.contains('.entity.dummy.') }.join('\n'))
dstFile2.write(srcFile2.readLines().findAll{ !it.contains('.entity.dummy.') }.join('\n'))
}
}
jar {
exclude '**/entity/dummy/*'
2016-07-19 22:23:11 +08:00
exclude { it.file == file("$buildDir/resources/main/base-persistence.xml") }
exclude { it.file == file("$buildDir/resources/main/cuba-persistence.xml") }
from "$buildDir/tmp/filtered"
2016-06-21 21:59:41 +08:00
manifest {
attributes('App-Component-Id': cuba.artifact.group)
2016-06-21 21:59:41 +08:00
attributes('App-Component-Version': cubaVersion)
}
}
jar.dependsOn filterDummyEntities
sourceJar {
exclude '**/entity/dummy/*'
exclude {
(it.file.name == 'base-persistence.xml' || it.file.name == 'cuba-persistence.xml') && sourceSets.main.java.srcDirs.contains(it.file.parentFile)
}
from "$buildDir/tmp/filtered"
}
sourceJar.dependsOn filterDummyEntities
findbugsMain {
classes = classes.filter {
!it.path.contains(new File("com/haulmont/cuba/core/global/release.").path)
}
}
2011-11-17 16:31:31 +08:00
}
configure(coreModule) {
configurations {
dbscripts
}
2011-11-17 16:31:31 +08:00
dependencies {
compile(globalModule)
compile(sharedLibModule)
2016-11-09 18:38:05 +08:00
compile(bom['javax.validation:validation-api'])
compile(bom['com.thoughtworks.xstream:xstream'])
2016-11-09 18:38:05 +08:00
compile(bom['org.jgroups:jgroups'])
compile(bom['org.aspectj:aspectjrt'])
compile(bom['org.aspectj:aspectjweaver'])
compile(bom['org.mybatis:mybatis'])
compile(bom['org.mybatis:mybatis-spring'])
compile(bom['org.springframework:spring-context-support'])
compile(bom['org.springframework:spring-orm'])
compile(bom['org.springframework:spring-tx'])
compile(bom['org.springframework:spring-webmvc'])
2016-12-02 17:03:40 +08:00
compile(bom['org.apache.poi:poi']) // POI is actually not required by core, but remains here to simplify dependencies for reports project
2016-11-09 18:38:05 +08:00
compile(bom['org.jsoup:jsoup']) // simplify version management for fts
compileOnly(bom['javax.servlet:javax.servlet-api'])
2016-11-09 18:38:05 +08:00
jdbc(bom['org.postgresql:postgresql'])
jdbc(bom['org.hsqldb:hsqldb'])
testCompile(coreTestsModule)
2018-06-05 21:48:37 +08:00
testCompile(bom['org.hsqldb:hsqldb'])
testCompile(bom['org.codehaus.groovy:groovy-json'])
2011-11-17 16:31:31 +08:00
}
entitiesEnhancing {
test {
enabled = true
}
}
2011-11-17 16:31:31 +08:00
test {
scanForTestClasses = false
includes = ['**/*Test.class']
systemProperties = [
2018-05-23 19:52:31 +08:00
'logback.configurationFile': System.getProperty('logback.configurationFile'),
'jdk.attach.allowAttachSelf' : 'true'
]
2011-11-17 16:31:31 +08:00
}
task testEntityCache(type: Test) {
scanForTestClasses = false
includes = ['com/haulmont/cuba/entity_cache/EntityCacheTestSuite.class']
systemProperties = [
'logback.configurationFile': System.getProperty('logback.configurationFile')
]
}
task testJoinedComposition(type: Test) {
scanForTestClasses = false
includes = ['spec/cuba/core/composition/joined_composition/JoinedCompositionTestClass.class']
}
test.finalizedBy testJoinedComposition
assembleDbScripts {
moduleAlias = '10-cuba'
2011-11-17 16:31:31 +08:00
}
task deploy(dependsOn: assemble, type: CubaDeployment) {
appName = 'cuba-core'
appJars('cuba-global', 'cuba-core')
2011-11-17 16:31:31 +08:00
}
def hsqlDbName = 'cubadb'
def hsqlPort = 9111
task startDb(description: 'Starts local HSQLDB server', type: CubaHsqlStart) {
dbPort = hsqlPort
dbName = hsqlDbName
}
task stopDb(description: 'Stops local HSQLDB server', type: CubaHsqlStop) {
dbPort = hsqlPort
dbName = hsqlDbName
}
task removeDb(description: 'Removes local HSQL database', type: Delete) {
delete new File("$rootProject.projectDir/data")
}
task killDb(description: "Kill local HSQLDB server process running on port $hsqlPort", type: CubaKillProcess) {
port = hsqlPort
}
task createDb(dependsOn: assembleDbScripts, description: 'Creates local HSQL database', type: CubaDbCreation) {
dbms = 'hsql'
host = "localhost:$hsqlPort"
dbName = hsqlDbName
dbUser = 'sa'
dbPassword = ''
}
task createTestDb(dependsOn: assembleDbScripts, description: 'Creates local HSQL database', type: CubaDbCreation) {
dbms = 'hsql'
host = "localhost:$hsqlPort"
dbName = hsqlDbName
dbUser = 'sa'
dbPassword = ''
auxiliaryScript = file('test/com/haulmont/cuba/testmodel/create-db.sql')
}
2011-11-17 16:31:31 +08:00
}
configure(coreTestsModule) {
apply(plugin: 'java')
apply(plugin: 'maven')
apply(plugin: 'cuba')
dependencies {
compile(coreModule)
2016-11-09 18:38:05 +08:00
compile(bom['org.apache.commons:commons-dbcp2'])
compile(bom['org.jmockit:jmockit'])
compile(bom['junit:junit'])
}
task sourceJar(type: Jar) {
from file('src')
include 'com/haulmont/cuba/core/CubaTestCase*.class'
include 'com/haulmont/cuba/core/CubaTestCase*.java'
include 'com/haulmont/cuba/testsupport/*'
include '*'
classifier = 'sources'
}
artifacts {
archives sourceJar
}
}
2011-11-17 16:31:31 +08:00
configure(clientModule) {
dependencies {
compile(globalModule)
2016-11-09 18:38:05 +08:00
compile(bom['org.jsoup:jsoup']) // simplify version management for fts
2011-11-17 16:31:31 +08:00
}
}
configure(clientTestsModule) {
apply(plugin: 'java')
apply(plugin: 'maven')
apply(plugin: 'cuba')
dependencies {
compile(clientModule)
2016-11-09 18:38:05 +08:00
compile(bom['org.jmockit:jmockit'])
compile(bom['junit:junit'])
}
task sourceJar(type: Jar) {
from file('src')
classifier = 'sources'
2011-11-17 16:31:31 +08:00
}
artifacts {
archives sourceJar
2011-11-17 16:31:31 +08:00
}
}
configure(guiModule) {
dependencies {
compile(clientModule)
2016-11-09 18:38:05 +08:00
2016-12-02 17:11:16 +08:00
compile(bom['org.apache.poi:poi'])
2011-11-17 16:31:31 +08:00
testCompile(clientTestsModule)
2011-11-17 16:31:31 +08:00
}
entitiesEnhancing {
main {
enabled = true
}
}
2013-04-09 18:15:55 +08:00
2011-11-17 16:31:31 +08:00
test {
scanForTestClasses = false
includes = ['**/*Test.class']
2014-12-12 22:58:30 +08:00
2015-05-22 21:52:44 +08:00
exclude 'com/haulmont/cuba/gui/components/*ComponentTest.class'
exclude 'com/haulmont/cuba/gui/components/*FieldTest.class'
2011-11-17 16:31:31 +08:00
}
}
2018-03-07 21:24:37 +08:00
configure(webWidgetsModule) {
dependencies {
compileOnly(bom['org.apache.tomcat:tomcat-servlet-api'])
2018-03-07 21:24:37 +08:00
compile(bom['org.apache.commons:commons-lang3'])
compile(bom['com.google.guava:guava'])
2018-03-07 21:24:37 +08:00
compile(bom['com.google.code.findbugs:jsr305'])
compile(bom['org.apache.commons:commons-collections4'])
compile(bom['org.slf4j:slf4j-api'])
/* Vaadin */
compile(bom['com.vaadin:vaadin-server']) {
exclude(group: 'com.vaadin', module: 'vaadin-sass-compiler')
}
compile(bom['com.vaadin:vaadin-compatibility-server']) {
exclude(group: 'com.vaadin', module: 'vaadin-sass-compiler')
}
2018-03-07 23:15:35 +08:00
compile(bom['com.vaadin:vaadin-push'])
2018-03-07 21:24:37 +08:00
/* Vaadin addons */
/* The following add-ons are embedded into Platform
com.vaadin:vaadin-context-menu:2.1.0
org.vaadin.addons:aceeditor:0.8.15
org.vaadin.addons:popupbutton:3.0.0
org.vaadin.addons:dragdroplayouts:1.4.2.cuba.0
*/
2018-03-07 21:24:37 +08:00
/* WebJar dependencies */
compile(bom['org.webjars:jquery'])
compile(bom['org.webjars:jquery-ui'])
compile(bom['org.webjars.bower:jquery-file-upload'])
compile(bom['org.webjars.npm:object-fit-images'])
compile(bom['org.webjars.bower:ace-builds'])
compile(bom['org.webjars:diff-match-patch'])
2018-03-07 21:24:37 +08:00
}
jar {
with copySpec {
from sourceSets.main.allJava
include "com/haulmont/cuba/web/widgets/client/**"
}
}
}
2011-11-17 16:31:31 +08:00
configure(webModule) {
configurations {
themes
}
2011-11-17 16:31:31 +08:00
dependencies {
compile(sharedLibModule)
compile(guiModule)
compile(restApiModule)
compile(idpModule)
2018-03-07 21:24:37 +08:00
compile(webWidgetsModule)
2013-02-06 23:14:40 +08:00
compile(bom['org.springframework.ldap:spring-ldap-core']) {
2018-03-07 21:24:37 +08:00
// removed because it defines its own Log4j LogFactory via JDK services mechanism
exclude(group: 'org.slf4j', module: 'jcl-over-slf4j')
}
// use the same spring-tx as core
compile(bom['org.springframework:spring-tx'])
compile(bom['org.jsoup:jsoup']) // use the same version as core
2018-03-07 23:15:35 +08:00
compile(bom['org.springframework:spring-webmvc'])
compile(bom['commons-fileupload:commons-fileupload']) // required for Spring multipart resolver
compile(bom['com.haulmont.cuba-resources:cuba-png-icons'])
compileOnly(bom['javax.servlet:javax.servlet-api'])
2014-12-05 19:56:06 +08:00
2016-11-09 18:38:05 +08:00
themes(bom['com.vaadin:vaadin-themes'])
2018-05-24 16:23:38 +08:00
testCompile('cglib:cglib-nodep:3.2.6')
testCompile(clientTestsModule)
2014-12-08 16:45:59 +08:00
testCompile(guiModule.sourceSets.test.output)
testRuntime(bom['javax.servlet:javax.servlet-api'])
2011-11-17 16:31:31 +08:00
}
entitiesEnhancing {
main {
enabled = true
}
test {
enabled = true
}
}
task enhanceTestModel(type: CubaTestEnhancing)
task buildScssThemes(type: CubaWebScssThemeCreation) {
themes = ['halo', 'hover'
2018-03-07 21:24:37 +08:00
/* vaadin8 , 'havana'*/]
2014-10-15 17:43:55 +08:00
// compress = true
// sprites = true
// cleanup = true
2014-10-13 22:36:40 +08:00
}
2015-12-16 21:07:09 +08:00
task deployThemes(type: CubaDeployThemeTask, dependsOn: buildScssThemes) {
}
task buildHover(type: CubaWebScssThemeCreation) {
themes = ['hover']
// compress = true
// sprites = true
// cleanup = true
}
task deployHover(type: Copy, dependsOn: buildHover) {
from file("$webModule.buildDir/web/VAADIN/themes/hover")
into "${cuba.tomcat.dir}/webapps/cuba/VAADIN/themes/hover"
exclude '**/web.xml'
}
2014-10-13 22:36:40 +08:00
task buildHalo(type: CubaWebScssThemeCreation) {
themes = ['halo']
2014-10-15 17:43:55 +08:00
// compress = true
// sprites = true
// cleanup = true
2014-10-13 22:36:40 +08:00
}
task deployHalo(type: Copy, dependsOn: buildHalo) {
from file("$webModule.buildDir/web/VAADIN/themes/halo")
into "${cuba.tomcat.dir}/webapps/cuba/VAADIN/themes/halo"
2014-10-13 22:36:40 +08:00
exclude '**/web.xml'
2011-11-17 16:31:31 +08:00
}
task buildHavana(type: CubaWebScssThemeCreation) {
themes = ['havana']
// compress = true
// sprites = true
// cleanup = true
}
task deployHavana(type: Copy, dependsOn: buildHavana) {
from file("$webModule.buildDir/web/VAADIN/themes/havana")
into "${cuba.tomcat.dir}/webapps/cuba/VAADIN/themes/havana"
exclude '**/web.xml'
}
def webOutDir = file("$buildDir/web")
task webArchive(dependsOn: buildScssThemes, type: Zip) {
from file('web')
from webOutDir
exclude '**/web.xml', '**/app.properties'
classifier = 'web'
}
artifacts {
archives webArchive
2011-11-17 16:31:31 +08:00
}
task deploy(dependsOn: assemble, type: CubaDeployment) {
appName = 'cuba'
appJars('cuba-global', 'cuba-client', 'cuba-gui', 'cuba-web', 'cuba-rest-api', 'cuba-idp')
2011-11-17 16:31:31 +08:00
}
2013-02-06 23:14:40 +08:00
}
configure(webModuleThemesModule) {
apply(plugin: 'java')
apply(plugin: 'maven')
apply(plugin: 'cuba')
appModuleType = 'web-themes'
buildDir = file('../build/scss-themes')
sourceSets {
main {
java {
srcDir '.'
}
resources {
srcDir '.'
}
}
}
dependencies {
2016-11-09 18:38:05 +08:00
compile(bom['com.vaadin:vaadin-themes'])
}
}
2013-02-06 23:14:40 +08:00
configure(webToolkitModule) {
dependencies {
2018-03-07 21:24:37 +08:00
compile(webWidgetsModule)
compile(bom['com.vaadin:vaadin-client'])
compile(bom['com.vaadin:vaadin-client-compiler'])
compile(bom['com.vaadin:vaadin-compatibility-client'])
runtime(bom['javax.servlet:javax.servlet-api'])
2013-02-06 23:14:40 +08:00
}
task buildWidgetSet(type: CubaWidgetSetBuilding) {
2018-03-07 21:24:37 +08:00
widgetSetClass = 'com.haulmont.cuba.web.widgets.WidgetSet'
// Strict
strict = true
// Debug flags:
// printCompilerClassPath = true
// logLevel = 'INFO'
// Parallel thread count
workers = 2
// Performance and widgetset size:
style = 'PRETTY' // 'OBF' or 'PRETTY' or 'DETAILED'
disableCastChecking = false
optimize = 9
draft = false
// Compiler JVM
2018-03-07 21:24:37 +08:00
xmx = '-Xmx768m'
xss = '-Xss8m'
xxMPS = '-XX:MaxPermSize=256m'
}
task buildDebugWidgetSet(type: CubaWidgetSetBuilding) {
widgetSetsDir = "$project.buildDir/web-debug/VAADIN/widgetsets"
2018-03-07 21:24:37 +08:00
widgetSetClass = 'com.haulmont.cuba.web.widgets.WidgetSet'
// Performance and widgetset size:
style = 'PRETTY'
}
2015-07-23 18:05:41 +08:00
task debugWidgetSet(type: CubaWidgetSetDebug) {
2018-03-07 21:24:37 +08:00
widgetSetClass = 'com.haulmont.cuba.web.widgets.WidgetSet'
2015-07-23 18:05:41 +08:00
}
jar {
from sourceSets.main.allJava
2013-02-06 23:14:40 +08:00
}
task webArchive(dependsOn: buildWidgetSet, type: Zip) {
from file("$buildDir/web")
2013-02-06 23:14:40 +08:00
classifier = 'web'
}
task webDebugArchive(dependsOn: buildDebugWidgetSet, type: Zip) {
from file("$buildDir/web-debug")
classifier = 'debug'
}
2013-02-06 23:14:40 +08:00
artifacts {
archives webArchive
if (!cuba.artifact.isSnapshot) {
archives webDebugArchive
}
2013-02-06 23:14:40 +08:00
}
task deploy(dependsOn: buildWidgetSet) {
doLast {
delete {
"$cuba.tomcat.dir/webapps/cuba/VAADIN/widgetsets"
}
copy {
from "$buildDir/web"
into "$cuba.tomcat.dir/webapps/cuba"
}
2011-11-17 16:31:31 +08:00
}
}
task cleanWidgetSet(dependsOn: clean) {
}
2011-11-17 16:31:31 +08:00
}
configure(desktopModule) {
apply(plugin: 'application')
2016-11-09 18:38:05 +08:00
2011-11-17 16:31:31 +08:00
mainClassName = 'com.haulmont.cuba.desktop.App'
dependencies {
compile(guiModule)
2016-11-09 18:38:05 +08:00
compile(bom['com.miglayout:miglayout-swing'])
compile(bom['com.fifesoft:rsyntaxtextarea'])
compile(bom['com.haulmont.thirdparty:glazedlists'])
compile(bom['com.haulmont.thirdparty:swingx-core'])
2014-12-08 16:45:59 +08:00
compile(bom['com.haulmont.cuba-resources:cuba-png-icons'])
testCompile(clientTestsModule)
2014-12-08 16:45:59 +08:00
testCompile(guiModule.sourceSets.test.output)
testRuntime(bom['javax.servlet:javax.servlet-api'])
2011-11-17 16:31:31 +08:00
}
// disable building of *.tar and *.zip artifacts by default assemble task
configurations.archives.artifacts.removeAll {
it.file =~ 'tar' || it.file =~ 'zip'
}
// vaadin8
compileJava.enabled = false
2018-06-05 21:56:44 +08:00
test.enabled = false
2018-06-05 22:12:03 +08:00
compileTestGroovy.enabled = false
compileTestJava.enabled = false
2011-11-17 16:31:31 +08:00
}
configure(restApiModule) {
dependencies {
compile(globalModule)
compile(clientModule)
compile(sharedLibModule)
2016-11-09 18:38:05 +08:00
compile(bom['commons-fileupload:commons-fileupload']) // required for Spring multipart resolver
2016-11-09 18:38:05 +08:00
compile(bom['org.springframework:spring-webmvc'])
compile(bom['org.springframework:spring-context-support'])
2017-08-17 22:29:07 +08:00
compile(bom['org.springframework.ldap:spring-ldap-core']) {
exclude(group: 'org.slf4j', module: 'jcl-over-slf4j') // removed because it defines its own Log4j LogFactory via JDK services mechanism
}
2016-11-09 18:38:05 +08:00
compile(bom['org.json:json'])
compile(bom['com.fasterxml.jackson.core:jackson-databind'])
compile(bom['com.fasterxml.jackson.core:jackson-annotations'])
2016-11-09 18:38:05 +08:00
compile(bom['com.fasterxml.jackson.dataformat:jackson-dataformat-yaml'])
compile(bom['org.springframework.security:spring-security-core'])
compile(bom['org.springframework.security:spring-security-web'])
compile(bom['org.springframework.security:spring-security-config'])
compile(bom['org.springframework.security.oauth:spring-security-oauth2'])
compile(bom['io.swagger:swagger-models'])
compileOnly(bom['javax.servlet:javax.servlet-api'])
2016-11-09 18:38:05 +08:00
testCompile(clientTestsModule)
}
}
configure(portalModule) {
dependencies {
compile(globalModule)
compile(clientModule)
compile(sharedLibModule)
compile(restApiModule)
2016-11-09 18:38:05 +08:00
compile(bom['org.springframework:spring-webmvc'])
compile(bom['org.springframework:spring-context-support'])
compile(bom['org.springframework:spring-jdbc'])
compile(bom['org.springframework.security:spring-security-core'])
compile(bom['org.springframework.security:spring-security-web'])
compile(bom['org.springframework.security:spring-security-config'])
compile(bom['org.springframework.security:spring-security-taglibs'])
compile(bom['org.json:json'])
compile(bom['org.thymeleaf:thymeleaf'])
compile(bom['org.thymeleaf:thymeleaf-spring4'])
compile(bom['org.thymeleaf.extras:thymeleaf-extras-springsecurity4'])
compileOnly(bom['javax.servlet:javax.servlet-api'])
2016-05-11 19:23:39 +08:00
testCompile(clientTestsModule)
}
test {
scanForTestClasses = false
includes = ['**/*Test.class']
}
task deploy(dependsOn: assemble, type: CubaDeployment) {
appName = 'cuba-portal'
appJars('cuba-global', 'cuba-client', 'cuba-portal', 'cuba-rest-api')
}
}
configure(idpModule) {
dependencies {
compile(globalModule)
compile(clientModule)
compile(sharedLibModule)
2016-11-09 18:38:05 +08:00
compile(bom['org.springframework:spring-webmvc'])
compile(bom['org.springframework:spring-context-support'])
compile(bom['org.springframework.ldap:spring-ldap-core']) {
exclude(group: 'org.slf4j', module: 'jcl-over-slf4j') // removed because it defines its own Log4j LogFactory via JDK services mechanism
}
2016-11-09 18:38:05 +08:00
compile(bom['org.springframework.security:spring-security-core'])
compile(bom['org.springframework.security:spring-security-config'])
compile(bom['org.springframework.security:spring-security-web'])
testCompile(clientTestsModule)
2016-11-09 18:38:05 +08:00
compileOnly(bom['javax.servlet:javax.servlet-api'])
}
task webArchive(type: Zip) {
from file('web')
classifier = 'web'
}
artifacts {
archives webArchive
}
task deploy(dependsOn: assemble) {
doLast {
delete {
"$cuba.tomcat.dir/webapps/cuba/idp"
}
copy {
from "$projectDir/web"
into "$cuba.tomcat.dir/webapps/cuba"
}
}
}
}
2017-03-29 15:34:56 +08:00
configure(uberJarModule) {
dependencies {
compile(bom['org.eclipse.jetty:jetty-server']) {
exclude module: 'jetty-util'
}
compile(bom['org.eclipse.jetty:jetty-webapp']) {
exclude module: 'jetty-util'
}
compile(bom['org.eclipse.jetty:jetty-plus']) {
exclude module: 'jetty-util'
}
compile(bom['org.eclipse.jetty:jetty-jndi']) {
exclude module: 'jetty-util'
}
compile(bom['org.eclipse.jetty.websocket:websocket-server']) {
exclude module: 'jetty-util'
}
compile(bom['org.eclipse.jetty:jetty-util'])
2017-03-29 15:34:56 +08:00
compile(bom['commons-cli:commons-cli'])
compile(bom['commons-io:commons-io'])
compile(bom['org.apache.commons:commons-dbcp2'])
compile(bom['ch.qos.logback:logback-classic'])
compile(bom['org.slf4j:log4j-over-slf4j'])
compile(bom['org.perf4j:perf4j'])
2017-03-29 15:34:56 +08:00
}
}
configure(frontModule) {
dependencies {
compile(bom['org.springframework:spring-webmvc'])
compile(bom['org.springframework:spring-context-support'])
compileOnly(bom['javax.servlet:javax.servlet-api'])
}
}
task restart(dependsOn: ['stop', ':cuba-core:deploy', ':cuba-web:deploy', ':cuba-web-toolkit: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')
}
2011-11-17 16:31:31 +08:00
}
start.execute()
2011-11-17 16:31:31 +08:00
}
}
2018-03-07 23:15:35 +08:00
zipProject {
excludeFromZip = ['out']
}
2018-05-23 19:52:31 +08:00
//apply plugin: 'jacoco'
//
//jacoco {
// toolVersion = "0.8.1"
//}
//
//task jacocoProjectReport(type: JacocoReport, group: 'Reporting') {
// description = 'Generates an aggregate report from all subprojects'
//
// def jacocoProjects = subprojects.findAll { prj ->
// return prj.project.extensions.findByName('jacoco') != null
// }
//
// dependsOn(jacocoProjects.jacocoTestReport)
//
// additionalSourceDirs = generateSourceFiles(jacocoProjects)
// sourceDirectories = generateSourceFiles(jacocoProjects)
// classDirectories = generateClassDirs(jacocoProjects)
// executionData = rootProject.files(jacocoProjects.jacocoTestReport.executionData)
//
// reports {
// html {
// enabled true
// destination new File(rootProject.buildDir, 'reports/jacoco/project')
// }
// xml {
// enabled true
// destination new File(rootProject.buildDir, 'reports/jacoco/project/jacoco-project.xml')
// }
// }
//
// doFirst {
// executionData = files(executionData.findAll { it.exists() })
// }
//}
def generateSourceFiles(Collection projects) {
def dirs = projects.collect { prj -> new File(prj.projectDir, 'src') }
return rootProject.files(dirs)
}
def generateClassDirs(Collection projects) {
def trees = projects.collect { prj ->
return prj.fileTree(dir: new File(prj.buildDir, 'classes/java/main'))
}
return trees.inject(files().asFileTree) { sum, current ->
sum += current
}
2018-03-14 00:01:17 +08:00
}
task aggregateJavadoc(type: Javadoc,
description: 'Generate javadocs from all child projects as if it was a single project',
group: 'Documentation') {
destinationDir = file("$buildDir/docs/javadoc")
title = "${project.name.toUpperCase()} ${cubaVersion.replace('-SNAPSHOT','')} API"
2018-03-14 00:01:17 +08:00
options.encoding = 'UTF-8'
options.addStringOption("sourcepath", "")
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PUBLIC
exclude 'com/haulmont/cuba/core/app/cache/**'
exclude 'com/haulmont/cuba/core/sys/jpql/antlr2/**'
exclude 'com/haulmont/cuba/core/sys/utils/**'
exclude 'com/haulmont/cuba/restapi/**'
2018-04-10 15:59:10 +08:00
exclude 'com/haulmont/cuba/gui/components/compatibility/**'
exclude 'com/haulmont/cuba/gui/xml/layout/loaders/**'
exclude 'com/haulmont/cuba/desktop/sys/**'
exclude 'com/haulmont/cuba/desktop/gui/components/**'
exclude 'com/haulmont/cuba/desktop/gui/data/**'
exclude 'com/haulmont/cuba/desktop/gui/executors/**'
2018-03-14 00:01:17 +08:00
exclude 'com/haulmont/cuba/web/toolkit/**'
2018-04-10 15:59:10 +08:00
exclude 'com/haulmont/cuba/web/controllers/**'
exclude 'com/haulmont/cuba/web/gui/components/**'
exclude 'com/haulmont/cuba/web/gui/data/**'
exclude 'com/haulmont/cuba/web/gui/executors/**'
2018-03-14 00:01:17 +08:00
exclude 'org/eclipse/**'
subprojects.each { proj ->
def javadocTask = proj.tasks.getByPath('javadoc')
source += javadocTask.source
classpath += javadocTask.classpath
}
}