Moved to multi-project gradle build; added (non-working) hello world for bulletin-board server using Jetty and Jersey
							parent
							
								
									d75060e914
								
							
						
					
					
						commit
						eb1230d719
					
				
							
								
								
									
										207
									
								
								build.gradle
								
								
								
								
							
							
						
						
									
										207
									
								
								build.gradle
								
								
								
								
							| 
						 | 
				
			
			@ -1,206 +1,11 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'com.google.protobuf'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'application'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
mainClassName='Demo'
 | 
			
		||||
 | 
			
		||||
// Is this a snapshot version?
 | 
			
		||||
ext { isSnapshot = false } 
 | 
			
		||||
 | 
			
		||||
ext {
 | 
			
		||||
        groupId = 'org.factcenter'
 | 
			
		||||
        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"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// Don't exclude build directory 
 | 
			
		||||
	excludeDirs -= file(buildDir)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Used to generate initial maven-dir layout
 | 
			
		||||
task "create-dirs" { description = "Create default maven directory structure" } << {
 | 
			
		||||
    sourceSets*.java.srcDirs*.each { it.mkdirs() }
 | 
			
		||||
    sourceSets*.resources.srcDirs*.each { it.mkdirs() }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*===================================
 | 
			
		||||
 *        "Fat" Build targets
 | 
			
		||||
 *===================================*/
 | 
			
		||||
 | 
			
		||||
task fatjar(type: Jar) {
 | 
			
		||||
    description = "Generate a single jar containing everything. Use -Pfatmain=... to override main class"
 | 
			
		||||
 | 
			
		||||
    destinationDir = buildDir
 | 
			
		||||
 | 
			
		||||
    def fatMain = hasProperty('fatmain') ? fatmain : mainClassName
 | 
			
		||||
    def testJar = hasProperty('test')
 | 
			
		||||
 | 
			
		||||
    appendix = "${fatMain}-fat"
 | 
			
		||||
 | 
			
		||||
    if (testJar) {
 | 
			
		||||
        from sourceSets.test.output
 | 
			
		||||
        from configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    from sourceSets.main.output // that's it
 | 
			
		||||
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
 | 
			
		||||
 | 
			
		||||
    exclude 'META-INF/MANIFEST.MF'
 | 
			
		||||
    exclude 'META-INF/*.SF'
 | 
			
		||||
    exclude 'META-INF/*.DSA'
 | 
			
		||||
    exclude 'META-INF/*.RSA'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    manifest { attributes 'Main-Class': fatMain }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 '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 
 | 
			
		||||
            }
 | 
			
		||||
subprojects { proj ->
 | 
			
		||||
    proj.afterEvaluate {
 | 
			
		||||
        // Used to generate initial maven-dir layout
 | 
			
		||||
        task "create-dirs" { description = "Create default maven directory structure" } << {
 | 
			
		||||
            sourceSets*.java.srcDirs*.each { it.mkdirs() }
 | 
			
		||||
            sourceSets*.resources.srcDirs*.each { it.mkdirs() }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,177 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
// Uncomment both lines below to define an application (must set mainClassName
 | 
			
		||||
//apply plugin: 'application'
 | 
			
		||||
//mainClassName='your.main.ApplicationClass'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
// 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 = "TODO: Add a description"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // Meerkat common
 | 
			
		||||
    compile project(':meerkat-common')
 | 
			
		||||
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// Don't exclude build directory 
 | 
			
		||||
	excludeDirs -= file(buildDir)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*===================================
 | 
			
		||||
 *        "Fat" Build targets
 | 
			
		||||
 *===================================*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,211 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'jetty'
 | 
			
		||||
//mainClassName = 'Demo'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
// 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 = "TODO: Add a description"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // Meerkat common
 | 
			
		||||
    compile project(':meerkat-common')
 | 
			
		||||
 | 
			
		||||
    // Jersey for RESTful API
 | 
			
		||||
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.22.+'
 | 
			
		||||
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
test {
 | 
			
		||||
    exclude '**/*IntegrationTest*'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
task integrationTest(type: Test) {
 | 
			
		||||
    include '**/*IntegrationTest*'
 | 
			
		||||
    jettyRun {
 | 
			
		||||
        httpPort = 8081   // Port for test
 | 
			
		||||
        daemon = true
 | 
			
		||||
        stopPort = 8091   // Port for stop signal
 | 
			
		||||
        stopKey = 'stopKey'
 | 
			
		||||
    }
 | 
			
		||||
    jettyStop {
 | 
			
		||||
        stopPort = 8091   // Port for stop signal
 | 
			
		||||
        stopKey = 'stopKey'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    doFirst {
 | 
			
		||||
        jettyRun.execute()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    doLast {
 | 
			
		||||
        jettyStop.execute()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// 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 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
../gradlew
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
package service;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public class HelloWorldService {
 | 
			
		||||
    public String sayHello() {
 | 
			
		||||
        return "Hello, World!";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
package webapp;
 | 
			
		||||
 | 
			
		||||
import javax.ws.rs.GET;
 | 
			
		||||
import javax.ws.rs.Path;
 | 
			
		||||
 | 
			
		||||
import service.HelloWorldService;
 | 
			
		||||
 | 
			
		||||
@Path("/hello")
 | 
			
		||||
public class HelloWebApp {
 | 
			
		||||
	private static HelloWorldService helloWorldService = new HelloWorldService();
 | 
			
		||||
	
 | 
			
		||||
	@GET()
 | 
			
		||||
	public String hello() {
 | 
			
		||||
		return helloWorldService.sayHello();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
<web-app>
 | 
			
		||||
    <servlet>
 | 
			
		||||
        <servlet-name>Jersey Hello World Application</servlet-name>
 | 
			
		||||
        <servlet-class>
 | 
			
		||||
                org.glassfish.jersey.servlet.ServletContainer
 | 
			
		||||
        </servlet-class>
 | 
			
		||||
        <init-param>
 | 
			
		||||
            <param-name>jersey.config.server.provider.packages</param-name>
 | 
			
		||||
            <param-value>webapp</param-value>
 | 
			
		||||
        </init-param>
 | 
			
		||||
        <load-on-startup>1</load-on-startup>
 | 
			
		||||
    </servlet>
 | 
			
		||||
    <servlet-mapping>
 | 
			
		||||
        <servlet-name>Jersey Hello World Application</servlet-name>
 | 
			
		||||
        <url-pattern>/*</url-pattern>
 | 
			
		||||
    </servlet-mapping>
 | 
			
		||||
</web-app>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
import javax.ws.rs.client.Client;
 | 
			
		||||
import javax.ws.rs.client.ClientBuilder;
 | 
			
		||||
import javax.ws.rs.client.WebTarget;
 | 
			
		||||
import static org.hamcrest.CoreMatchers.is;
 | 
			
		||||
import static org.hamcrest.MatcherAssert.assertThat;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
public class HelloIntegrationTest {
 | 
			
		||||
 | 
			
		||||
    private static String HELLO_URL = "http://localhost:8080/hello";
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testHello() throws Exception {
 | 
			
		||||
        Client client = ClientBuilder.newClient();
 | 
			
		||||
        WebTarget webTarget = client.target(HELLO_URL);
 | 
			
		||||
        String response = webTarget.request().get(String.class);
 | 
			
		||||
        System.out.println(response);
 | 
			
		||||
        assertThat(response, is("Hello, World!"));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,199 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'com.google.protobuf'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'application'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
mainClassName='Demo'
 | 
			
		||||
 | 
			
		||||
// 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 Common Library"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// Don't exclude build directory 
 | 
			
		||||
	excludeDirs -= file(buildDir)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*===================================
 | 
			
		||||
 *        "Fat" Build targets
 | 
			
		||||
 *===================================*/
 | 
			
		||||
 | 
			
		||||
task fatjar(type: Jar) {
 | 
			
		||||
    description = "Generate a single jar containing everything. Use -Pfatmain=... to override main class"
 | 
			
		||||
 | 
			
		||||
    destinationDir = buildDir
 | 
			
		||||
 | 
			
		||||
    def fatMain = hasProperty('fatmain') ? fatmain : mainClassName
 | 
			
		||||
    def testJar = hasProperty('test')
 | 
			
		||||
 | 
			
		||||
    appendix = "${fatMain}-fat"
 | 
			
		||||
 | 
			
		||||
    if (testJar) {
 | 
			
		||||
        from sourceSets.test.output
 | 
			
		||||
        from configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    from sourceSets.main.output // that's it
 | 
			
		||||
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
 | 
			
		||||
 | 
			
		||||
    exclude 'META-INF/MANIFEST.MF'
 | 
			
		||||
    exclude 'META-INF/*.SF'
 | 
			
		||||
    exclude 'META-INF/*.DSA'
 | 
			
		||||
    exclude 'META-INF/*.RSA'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    manifest { attributes 'Main-Class': fatMain }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 '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 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
../gradlew
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,178 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'application'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
// 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 = "TODO: Add a description"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // Meerkat common
 | 
			
		||||
    compile project(':meerkat-common')
 | 
			
		||||
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// 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 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
../gradlew
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
include 'meerkat-common'
 | 
			
		||||
include 'voting-booth'
 | 
			
		||||
include 'bulletin-board-server'
 | 
			
		||||
include 'polling-station'
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,177 @@
 | 
			
		|||
 | 
			
		||||
plugins {
 | 
			
		||||
  id "us.kirchmeier.capsule" version "1.0.1"
 | 
			
		||||
  id 'com.google.protobuf' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply plugin: 'java'
 | 
			
		||||
apply plugin: 'eclipse'
 | 
			
		||||
apply plugin: 'idea'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'application'
 | 
			
		||||
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
// 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 = "TODO: Add a description"
 | 
			
		||||
 | 
			
		||||
// Your project version
 | 
			
		||||
version = "0.0"
 | 
			
		||||
 | 
			
		||||
version += "${isSnapshot ? '-SNAPSHOT' : ''}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // Meerkat common
 | 
			
		||||
    compile project(':meerkat-common')
 | 
			
		||||
 | 
			
		||||
    // 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'
 | 
			
		||||
 | 
			
		||||
    // Google protobufs
 | 
			
		||||
    compile 'com.google.protobuf:protobuf-java:3.+'
 | 
			
		||||
 | 
			
		||||
    testCompile 'junit:junit:4.+'
 | 
			
		||||
 | 
			
		||||
    runtime 'org.codehaus.groovy:groovy:2.4.+'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*==== 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 {
 | 
			
		||||
        // add protobuf generated sources to generated source dir.
 | 
			
		||||
        sourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
        generatedSourceDirs += file(protobuf.generatedFilesBaseDir)
 | 
			
		||||
 | 
			
		||||
	// 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 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
../gradlew
 | 
			
		||||
		Loading…
	
		Reference in New Issue