blob: a47964964989ff573496969bddf0096d0110bb3e [file] [log] [blame]
plugins {
id 'java'
id 'application'
id 'idea'
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,
// when we have the fix for adding /conf directory to classpaht, we can get away with below default JvmArg
def confFile = "file:" + File.separator + File.separator + "APP_HOME_TO_REPLACE/conf/sidecar.yaml"
applicationDefaultJvmArgs = ["-Dsidecar.logdir=./logs",
"-Dsidecar.config=" + confFile,
"-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,
"-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory",
"-javaagent:$projectDir/src/dist/agents/jolokia-jvm-1.6.0-agent.jar=port=7777,host=localhost"]
}
sourceSets {
// This is needed as gradle considers `src/main/resources` as the default resources folder
main {
resources {
srcDirs = ['conf', 'setup', 'src/main/resources']
}
}
test {
resources {
srcDirs = [main.resources, "src/test/resources"]
}
}
}
configurations {
jolokia
}
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'
}
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/dist/agents"
}
// Lets clean /bin and /lib directories along with default build directories.
clean {
println "Deleting directory $projectDir/bin"
delete "$projectDir/bin"
println "Deleting directory $projectDir/lib"
delete "$projectDir/lib"
println "Deleting agents $projectDir/src/dist/agents"
delete "$projectDir/src/dist/agents"
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"
}
// copyDist gets called on every build
copyDist.dependsOn installDist
build.dependsOn copyDist, generateReDoc, generateSwaggerUI, copyJolokia