plugins { id "us.kirchmeier.capsule" version '1.0.2' id 'com.google.protobuf' version '0.8.0' } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'maven-publish' // Uncomment the lines below to define an application // (this will also allow you to build a "fatCapsule" which includes // the entire application, including all dependencies in a single jar) //apply plugin: 'application' //mainClassName='your.main.ApplicationClass' // Is this a snapshot version? ext { isSnapshot = false } ext { groupId = 'org.factcenter.meerkat' nexusRepository = "https://cs.idc.ac.il/nexus/content/groups/${isSnapshot ? 'unstable' : 'public'}/" // Credentials for IDC nexus repositories (needed only for using unstable repositories and publishing) // Should be set in ${HOME}/.gradle/gradle.properties nexusUser = project.hasProperty('nexusUser') ? project.property('nexusUser') : "" nexusPassword = project.hasProperty('nexusPassword') ? project.property('nexusPassword') : "" } description = "Meerkat voting booth application" // Your project version version = "0.0" version += "${isSnapshot ? '-SNAPSHOT' : ''}" dependencies { // Meerkat common compile project(':meerkat-common') compile project(':restful-api-common') // Jersey for RESTful API compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.5.+' // Servlets compile group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.+' compile 'org.eclipse.jetty:jetty-server:9.3.+' compile 'org.eclipse.jetty:jetty-servlet:9.3.+' // Logging compile 'org.slf4j:slf4j-api:1.7.7' runtime 'ch.qos.logback:logback-classic:1.1.2' runtime 'ch.qos.logback:logback-core:1.1.2' // Jar that creates barcodes compile group: 'net.sourceforge.barbecue', name: 'barbecue', version: '1.5-beta1' compile 'com.google.zxing:core:3.3.0' // Google protobufs compile 'com.google.protobuf:protobuf-java:3.+' testCompile 'junit:junit:4.+' runtime 'org.codehaus.groovy:groovy:2.4.+' // Meerkat polling station compile project(':polling-station') } /*==== 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 { // Prefer the local nexus repository (it may have 3rd party artifacts not found in mavenCentral) maven { url nexusRepository if (isSnapshot) { credentials { username password username nexusUser password nexusPassword } } } // Use local maven repository mavenLocal() // Use 'maven central' for other dependencies. mavenCentral() } task "info" << { 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 "https://cs.idc.ac.il/nexus/content/repositories/${project.isSnapshot ? 'snapshots' : 'releases'}" credentials { username password username nexusUser password nexusPassword } } } }