blob: 947a6bd2e422fcf9d4d49f00f7add8100963124f [file] [log] [blame]
plugins {
id 'java'
id 'application'
id 'idea'
id 'checkstyle'
id 'jacoco'
id 'findbugs'
id 'org.hidetake.swagger.generator' version '2.16.0'
}
group 'org.apache.cassandra'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
// Take the application out once we're running via Cassandra
mainClassName = "org.apache.cassandra.sidecar.CassandraSidecarDaemon"
applicationName = 'CassandraSidecarDaemon'
// Config file location should be in file:/// format for local files,
def confFile = "file:" + File.separator + File.separator + "APP_HOME_TO_REPLACE/conf/sidecar.yaml"
applicationDefaultJvmArgs = ["-Dsidecar.logdir=./logs",
"-Dsidecar.config=" + confFile,
"-Dlogback.configurationFile=./conf/logback.xml",
"-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory",
"-javaagent:APP_HOME_TO_REPLACE/agents/jolokia-jvm-1.6.0-agent.jar=port=7777,host=localhost"]
startScripts {
doLast {
unixScript.text = unixScript.text.replace("APP_HOME_TO_REPLACE", "\${APP_HOME}")
}
}
run {
confFile = "file:" + File.separator + File.separator + "$projectDir/conf/sidecar.yaml"
jvmArgs = ["-Dsidecar.logdir=./logs",
"-Dsidecar.config=" + confFile,
"-Dlogback.configurationFile=./conf/logback.xml",
"-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory",
"-javaagent:$projectDir/agents/jolokia-jvm-1.6.0-agent.jar=port=7777,host=localhost"]
}
sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integration/java')
}
resources {
srcDirs = [main.resources, "src/integration/resources"]
}
}
}
configurations {
jolokia
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}
dependencies {
compile 'io.vertx:vertx-web:3.6.3'
compile 'io.vertx:vertx-dropwizard-metrics:3.6.3'
compile 'io.vertx:vertx-web-client:3.6.3'
// Trying to be exactly compatible with Cassandra's deps
compile 'org.slf4j:slf4j-api:1.7.25'
compile 'ch.qos.logback:logback-core:1.2.3'
compile 'ch.qos.logback:logback-classic:1.2.3'
compile 'com.datastax.cassandra:cassandra-driver-core:3.6+'
compile group: 'com.google.inject', name: 'guice', version: '4.2.2'
compile group: 'org.apache.commons', name: 'commons-configuration2', version: '2.4'
runtime group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3'
runtime group: 'org.yaml', name: 'snakeyaml', version: '1.23'
jolokia 'org.jolokia:jolokia-jvm:1.6.0:agent'
swaggerUI 'org.webjars:swagger-ui:3.10.0'
testCompile group: 'org.cassandraunit', name: 'cassandra-unit-shaded', version: '3.3.0.2'
testCompile 'com.datastax.cassandra:cassandra-driver-core:3.6+:tests'
testCompile 'org.apache.commons:commons-exec:1.3+'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
testCompile group: 'io.vertx', name: 'vertx-junit5', version: '3.6.3'
integrationTestCompile group: 'com.datastax.oss.simulacron', name: 'simulacron-driver-3x', version: '0.8.7'
}
swaggerSources {
apidoc {
inputFile = file('api.yaml')
reDoc {
outputDir = file('src/main/resources/docs')
title = 'Cassandra Sidecar API Documentation'
}
ui {
outputDir = file('src/main/resources/docs/swagger')
}
}
}
task copyCodeStyle(type: Copy) {
from "ide/idea/codeStyleSettings.xml"
into ".idea"
}
// Lets copy the distributions from build/install directory to /bin and /lib
// directories to be aligned with C* distribution format
task copyDist(type: Copy) {
from "$buildDir/install/$applicationName"
into "$projectDir"
}
task copyJolokia(type: Copy) {
from configurations.jolokia
into "$projectDir/src/main/dist/agents"
}
// Lets clean distribution directories along with default build directories.
clean.doLast {
["agents", "bin", "conf", "lib"].each {
println "Deleting directory $projectDir/$it"
delete "$projectDir/$it"
}
println "Deleting generated docs $projectDir/src/main/resources/docs"
delete "$projectDir/src/main/resources/docs"
}
test {
useJUnitPlatform()
systemProperty "javax.net.ssl.trustStore", "$projectDir/src/test/resources/certs/ca.p12"
systemProperty "javax.net.ssl.trustStorePassword", "password"
}
task integrationTest(type: Test) {
jacoco {
enabled = false
}
useJUnitPlatform()
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
shouldRunAfter test
}
checkstyle {
toolVersion '7.8.1'
configFile file("checkstyle.xml")
}
tasks.withType(FindBugs) {
reports {
xml.enabled false
html.enabled true
}
}
// copyDist gets called on every build
copyDist.dependsOn installDist, copyJolokia
check.dependsOn checkstyleMain, checkstyleTest, integrationTest, jacocoTestReport
build.dependsOn copyDist, generateReDoc, generateSwaggerUI, copyJolokia
run.dependsOn build