java/java-dataflow-samples/read-pubsub-write-bigquery/build.gradle.kts (73 lines of code) (raw):
plugins {
application
id("com.diffplug.spotless") version "6.8.0"
}
group = "com.cloudcode.dataflow"
version = "0.0.1"
val mainClassName = "ReadPubsubWriteBigQuery"
val autoValueVersion = "1.10"
val beamVersion = "2.45.0"
val jupiterVersion = "5.9.0"
val mockitoVersion = "5.1.1"
val slf4jVersion = "1.7.32"
spotless {
java {
importOrder()
removeUnusedImports()
googleJavaFormat()
}
}
repositories {
mavenCentral()
maven {
// Required for Beam to resolve confluent dependency error
url = uri("https://packages.confluent.io/maven/")
}
}
dependencies {
implementation(platform("org.apache.beam:beam-sdks-java-bom:$beamVersion"))
implementation("org.apache.beam:beam-runners-direct-java")
implementation("org.apache.beam:beam-runners-google-cloud-dataflow-java")
implementation("org.apache.beam:beam-sdks-java-io-google-cloud-platform")
implementation("org.slf4j:slf4j-jdk14:$slf4jVersion")
compileOnly("com.google.auto.value:auto-value-annotations:$autoValueVersion")
annotationProcessor("com.google.auto.value:auto-value:$autoValueVersion")
testImplementation("org.junit.jupiter:junit-jupiter-api:$jupiterVersion")
testImplementation("org.junit.jupiter:junit-jupiter-params:$jupiterVersion")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testCompileOnly("com.google.auto.value:auto-value-annotations:$autoValueVersion")
testAnnotationProcessor("com.google.auto.value:auto-value:$autoValueVersion")
}
tasks.named<Test>("test") {
useJUnitPlatform()
testLogging {
setEvents(mutableListOf("PASSED", "SKIPPED", "FAILED"))
}
}
val usePublicIps = false
val runner = "dataflow"
val subscription: String? by project
val dataset: String? by project
val projectId: String? by project
val region: String? by project
val network: String? by project
val subnetwork: String? by project
val serviceAccountEmail: String? by project
val tempLocation: String? by project
val labels = "{\"cloud-code-sample\": \"${project.name}\"}"
tasks.named<JavaExec>("run") {
mainClass.set("${project.group}.$mainClassName")
args = listOf(
"--usePublicIps=$usePublicIps",
"--runner=$runner",
"--subscription=$subscription",
"--dataset=$dataset",
"--project=$projectId",
"--region=$region",
"--network=$network",
"--subnetwork=regions/$region/subnetworks/$subnetwork",
"--serviceAccount=$serviceAccountEmail",
"--tempLocation=$tempLocation",
"--streaming=true",
"--labels=$labels",
)
}