plugins { id "us.kirchmeier.capsule" version '1.0.2' id 'com.google.protobuf' version '0.8.1' id 'org.akhikhl.gretty' version "2.0.0" } apply plugin: 'org.akhikhl.gretty' apply plugin: 'com.google.protobuf' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'war' //apply plugin: 'application' //apply plugin: 'jetty' //mainClassName = 'SQLiteIntegrationTest' apply plugin: 'maven-publish' // Is this a snapshot version? ext { isSnapshot = false } ext { groupId = 'org.factcenter.meerkat' // Credentials for publishing repositories publishRepository = "https://cs.idc.ac.il/nexus/content/repositories/${project.isSnapshot ? 'snapshots' : 'releases'}" publishUser = project.hasProperty('publishUser') ? project.property('publishUser') : "" publishPassword = project.hasProperty('publishPassword') ? project.property('publishPassword') : "" } description = "Bulletin-board server web application" // Your project version version = "0.0.1" version += "${isSnapshot ? '-SNAPSHOT' : ''}" dependencies { // Meerkat common compile project(':meerkat-common') compile project(':restful-api-common') // JDBC connections compile 'org.springframework:spring-jdbc:4.2.+' compile 'org.xerial:sqlite-jdbc:3.8.+' compile 'mysql:mysql-connector-java:5.1.+' compile 'com.h2database:h2:1.0.+' compile 'org.apache.commons:commons-dbcp2:2.0.+' // Servlets // compile 'javax.servlet:javax.servlet-api:3.0.+' // Depend on test resources from meerkat-common testCompile project(path: ':meerkat-common', configuration: 'testOutput') testCompile 'junit:junit:4.+' } ext { frontendProject = project(":bulletin-board-server-frontend") } war { from frontendProject.projectDir.toPath().resolve("dist").toString() } frontendProject.afterEvaluate { war.dependsOn frontendProject.npm_run_build } test { exclude '**/*SQLite*Test*' exclude '**/*H2*Test*' exclude '**/*MySQL*Test*' exclude '**/*IntegrationTest*' } task myTest(type: Test) { include '**/*MySQL*Test*' outputs.upToDateWhen { false } } task h2Test(type: Test) { include '**/*H2*Test*' outputs.upToDateWhen { false } } task liteTest(type: Test) { include '**/*SQLite*Test*' outputs.upToDateWhen { false } } task dbTest(type: Test) { include '**/*H2*Test*' include '**/*MySQL*Test*' include '**/*SQLite*Test*' outputs.upToDateWhen { false } } task manualIntegration(type: Test) { include '**/*IntegrationTest*' } task integrationTest(type: Test) { include '**/*IntegrationTest*' // debug = true outputs.upToDateWhen { false } } gretty { httpPort = 8081 contextPath = '/' integrationTestTask = 'integrationTest' loggingLevel = 'TRACE' debugPort = 5006 } /*==== You probably don't have to edit below this line =======*/ protobuf { // Configure the protoc executable protoc { // Download from repositories artifact = 'com.google.protobuf:protoc:3.+' } } idea { module { project.sourceSets.each { sourceSet -> def srcDir = "${protobuf.generatedFilesBaseDir}/$sourceSet.name/java" // add protobuf generated sources to generated source dir. if ("test".equals(sourceSet.name)) { testSourceDirs += file(srcDir) } else { sourceDirs += file(srcDir) } generatedSourceDirs += file(srcDir) } // Don't exclude build directory excludeDirs -= file(buildDir) } } /*=================================== * "Fat" Build targets *===================================*/ if (project.hasProperty('mainClassName') && (mainClassName != null)) { task mavenCapsule(type: MavenCapsule) { description = "Generate a capsule jar that automatically downloads and caches dependencies when run." applicationClass mainClassName destinationDir = buildDir } task fatCapsule(type: FatCapsule) { description = "Generate a single capsule jar containing everything. Use -Pfatmain=... to override main class" destinationDir = buildDir def fatMain = hasProperty('fatmain') ? fatmain : mainClassName applicationClass fatMain def testJar = hasProperty('test') if (hasProperty('fatmain')) { appendix = "fat-${fatMain}" } else { appendix = "fat" } if (testJar) { from sourceSets.test.output } } } /*=================================== * Repositories *===================================*/ repositories { // Use local maven repository mavenLocal() //jcenter() // Use 'maven central' for other dependencies. mavenCentral() } task "info" { doLast { println "Project: ${project.name}" println "Description: ${project.description}" println "--------------------------" println "GroupId: $groupId" println "Version: $version (${isSnapshot ? 'snapshot' : 'release'})" println "" } } info.description 'Print some information about project parameters' /*=================================== * Publishing *===================================*/ publishing { publications { mavenJava(MavenPublication) { groupId project.groupId pom.withXml { asNode().appendNode('description', project.description) } from project.components.java } } repositories { maven { url publishRepository credentials { username password username publishUser password publishPassword } } } }