blob: a86efa9971cabcdef70adb09da95230174767991 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* License); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// See build_rules.gradle for documentation on default build tasks
// and properties that are enabled in addition to natures
// that can be applied to configure a project for certain common
// tasks.
apply from: project(":").file("build_rules.gradle")
// These versions are defined here because they represent
// a dependency version which should match across multiple
// Maven artifacts.
def google_cloud_bigdataoss_version = "1.4.5"
def bigtable_version = "1.0.0"
def bigtable_proto_version = "1.0.0-pre3"
def google_clients_version = "1.22.0"
def google_auth_version = "0.7.1"
def grpc_version = "1.2.0"
def protobuf_version = "3.2.0"
def guava_version = "20.0"
def netty_version = "4.1.8.Final"
def grpc_google_common_protos = "0.1.9"
def hamcrest_version = "1.3"
def hadoop_version = "2.7.3"
def jackson_version = "2.8.9"
def spark_version = "2.2.1"
def pubsub_grpc_version = "0.1.18"
def apex_core_version = "3.6.0"
def apex_malhar_version = "3.4.0"
def postgres_version = "9.4.1212.jre7"
// A map of maps containing common libraries used per language. To use:
// dependencies {
// shadow library.java.slf4j_api
// }
ext.library = [
java: [
activemq_amqp: "org.apache.activemq:activemq-amqp:5.13.1",
activemq_broker: "org.apache.activemq:activemq-broker:5.13.1",
activemq_client: "org.apache.activemq:activemq-client:5.13.1",
activemq_jaas: "org.apache.activemq:activemq-jaas:5.13.1",
activemq_junit: "org.apache.activemq.tooling:activemq-junit:5.13.1",
activemq_kahadb_store: "org.apache.activemq:activemq-kahadb-store:5.13.1",
activemq_mqtt: "org.apache.activemq:activemq-mqtt:5.13.1",
apex_common: "org.apache.apex:apex-common:$apex_core_version",
apex_engine: "org.apache.apex:apex-engine:$apex_core_version",
args4j: "args4j:args4j:2.33",
avro: "org.apache.avro:avro:1.8.2",
bigdataoss_gcsio: "com.google.cloud.bigdataoss:gcsio:$google_cloud_bigdataoss_version",
bigdataoss_util: "com.google.cloud.bigdataoss:util:$google_cloud_bigdataoss_version",
bigtable_client_core: "com.google.cloud.bigtable:bigtable-client-core:$bigtable_version",
bigtable_protos: "com.google.cloud.bigtable:bigtable-protos:$bigtable_proto_version",
byte_buddy: "net.bytebuddy:byte-buddy:1.6.8",
commons_compress: "org.apache.commons:commons-compress:1.14",
commons_csv: "org.apache.commons:commons-csv:1.4",
commons_io_1x: "commons-io:commons-io:1.3.2",
commons_io_2x: "commons-io:commons-io:2.5",
commons_lang3: "org.apache.commons:commons-lang3:3.6",
commons_text: "org.apache.commons:commons-text:1.1",
datastore_v1_proto_client: "com.google.cloud.datastore:datastore-v1-proto-client:1.4.0",
datastore_v1_protos: "com.google.cloud.datastore:datastore-v1-protos:1.3.0",
error_prone_annotations: "com.google.errorprone:error_prone_annotations:2.0.15",
findbugs_annotations: "com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1",
findbugs_jsr305: "com.google.code.findbugs:jsr305:3.0.1",
gax_grpc: "com.google.api:gax-grpc:0.20.0",
google_api_client: "com.google.api-client:google-api-client:$google_clients_version",
google_api_client_jackson2: "com.google.api-client:google-api-client-jackson2:$google_clients_version",
google_api_client_java6: "com.google.api-client:google-api-client-java6:$google_clients_version",
google_api_common: "com.google.api:api-common:1.0.0-rc2",
google_api_services_bigquery: "com.google.apis:google-api-services-bigquery:v2-rev355-$google_clients_version",
google_api_services_clouddebugger: "com.google.apis:google-api-services-clouddebugger:v2-rev8-$google_clients_version",
google_api_services_cloudresourcemanager: "com.google.apis:google-api-services-cloudresourcemanager:v1-rev6-$google_clients_version",
google_api_services_dataflow: "com.google.apis:google-api-services-dataflow:v1b3-rev221-$google_clients_version",
google_api_services_pubsub: "com.google.apis:google-api-services-pubsub:v1-rev10-$google_clients_version",
google_api_services_storage: "com.google.apis:google-api-services-storage:v1-rev71-$google_clients_version",
google_auth_library_credentials: "com.google.auth:google-auth-library-credentials:$google_auth_version",
google_auth_library_oauth2_http: "com.google.auth:google-auth-library-oauth2-http:$google_auth_version",
google_cloud_core: "com.google.cloud:google-cloud-core:1.0.2",
google_cloud_core_grpc: "com.google.cloud:google-cloud-core-grpc:$grpc_version",
google_cloud_dataflow_java_proto_library_all: "com.google.cloud.dataflow:google-cloud-dataflow-java-proto-library-all:0.5.160304",
google_cloud_spanner: "com.google.cloud:google-cloud-spanner:0.20.0-beta",
google_http_client: "com.google.http-client:google-http-client:$google_clients_version",
google_http_client_jackson: "com.google.http-client:google-http-client-jackson:$google_clients_version",
google_http_client_jackson2: "com.google.http-client:google-http-client-jackson2:$google_clients_version",
google_http_client_protobuf: "com.google.http-client:google-http-client-protobuf:$google_clients_version",
google_oauth_client: "com.google.oauth-client:google-oauth-client:$google_clients_version",
google_oauth_client_java6: "com.google.oauth-client:google-oauth-client-java6:$google_clients_version",
grpc_all: "io.grpc:grpc-all:$grpc_version",
grpc_auth: "io.grpc:grpc-auth:$grpc_version",
grpc_core: "io.grpc:grpc-core:$grpc_version",
grpc_google_cloud_pubsub_v1: "com.google.api.grpc:grpc-google-cloud-pubsub-v1:$pubsub_grpc_version",
grpc_protobuf: "io.grpc:grpc-protobuf:$grpc_version",
grpc_protobuf_lite: "io.grpc:grpc-protobuf-lite:$grpc_version",
grpc_netty: "io.grpc:grpc-netty:$grpc_version",
grpc_stub: "io.grpc:grpc-stub:$grpc_version",
guava: "com.google.guava:guava:$guava_version",
guava_testlib: "com.google.guava:guava-testlib:$guava_version",
hadoop_client: "org.apache.hadoop:hadoop-client:$hadoop_version",
hadoop_common: "org.apache.hadoop:hadoop-common:$hadoop_version",
hadoop_mapreduce_client_core: "org.apache.hadoop:hadoop-mapreduce-client-core:$hadoop_version",
hadoop_minicluster: "org.apache.hadoop:hadoop-minicluster:$hadoop_version",
hadoop_hdfs: "org.apache.hadoop:hadoop-hdfs:$hadoop_version",
hadoop_hdfs_tests: "org.apache.hadoop:hadoop-hdfs:$hadoop_version:tests",
hamcrest_core: "org.hamcrest:hamcrest-core:$hamcrest_version",
hamcrest_library: "org.hamcrest:hamcrest-library:$hamcrest_version",
jackson_annotations: "com.fasterxml.jackson.core:jackson-annotations:$jackson_version",
jackson_core: "com.fasterxml.jackson.core:jackson-core:$jackson_version",
jackson_databind: "com.fasterxml.jackson.core:jackson-databind:$jackson_version",
jackson_dataformat_cbor: "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:$jackson_version",
jackson_dataformat_yaml: "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jackson_version",
jackson_module_scala: "com.fasterxml.jackson.module:jackson-module-scala_2.11:$jackson_version",
joda_time: "joda-time:joda-time:2.4",
junit: "junit:junit:4.12",
kafka_clients: "org.apache.kafka:kafka-clients:1.0.0",
malhar_library: "org.apache.apex:malhar-library:$apex_malhar_version",
mockito_core: "org.mockito:mockito-core:1.9.5",
netty_handler: "io.netty:netty-handler:$netty_version",
netty_tcnative_boringssl_static: "io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26",
netty_transport_native_epoll: "io.netty:netty-transport-native-epoll:$netty_version",
postgres: "org.postgresql:postgresql:$postgres_version",
protobuf_java: "com.google.protobuf:protobuf-java:$protobuf_version",
protobuf_java_util: "com.google.protobuf:protobuf-java-util:$protobuf_version",
proto_google_cloud_pubsub_v1: "com.google.api.grpc:proto-google-cloud-pubsub-v1:$pubsub_grpc_version",
proto_google_cloud_spanner_admin_database_v1: "com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:$grpc_google_common_protos",
proto_google_common_protos: "com.google.api.grpc:proto-google-common-protos:$grpc_google_common_protos",
slf4j_api: "org.slf4j:slf4j-api:1.7.25",
slf4j_jdk14: "org.slf4j:slf4j-jdk14:1.7.25",
slf4j_log4j12: "org.slf4j:slf4j-log4j12:1.7.25",
snappy_java: "org.xerial.snappy:snappy-java:1.1.4",
spark_core: "org.apache.spark:spark-core_2.11:$spark_version",
spark_network_common: "org.apache.spark:spark-network-common_2.11:$spark_version",
spark_streaming: "org.apache.spark:spark-streaming_2.11:$spark_version",
stax2_api: "org.codehaus.woodstox:stax2-api:3.1.4",
woodstox_core_asl: "org.codehaus.woodstox:woodstox-core-asl:4.4.1",
],
]
// Define the set of repositories and dependencies required to
// fetch and enable plugins.
buildscript {
repositories {
maven { url offlineRepositoryRoot }
// To run gradle in offline mode, one must first invoke
// 'updateOfflineRepository' to create an offline repo
// inside the root project directory. See the application
// of the offline repo plugin within build_rules.gradle
// for further details.
if (gradle.startParameter.isOffline()) {
return
}
mavenLocal()
mavenCentral()
jcenter()
maven { url "https://plugins.gradle.org/m2/" }
maven { url "http://repo.spring.io/plugins-release" }
}
dependencies {
classpath "net.ltgt.gradle:gradle-apt-plugin:0.12" // Enable a Java annotation processor
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.1" // Enable proto code generation
classpath "io.spring.gradle:propdeps-plugin:0.0.9.RELEASE" // Enable provided and optional configurations
classpath "gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.3.1" // Enable Apache license enforcement
classpath "com.commercehub.gradle.plugin:gradle-avro-plugin:0.11.0" // Enable Avro code generation
classpath "com.diffplug.spotless:spotless-plugin-gradle:3.6.0" // Enable a code formatting plugin
classpath "gradle.plugin.com.github.blindpirate:gogradle:0.7.0" // Enable Go code compilation
classpath "gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0" // Enable building Docker containers
classpath "cz.malohlava:visteg:1.0.3" // Enable generating Gradle task dependencies as ".dot" files
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1" // Enable shading Java dependencies
classpath "ca.coglinc:javacc-gradle-plugin:2.4.0" // Enable the JavaCC parser generator
classpath "gradle.plugin.io.pry.gradle.offline_dependencies:gradle-offline-dependencies-plugin:0.3" // Enable creating an offline repository
}
}
/*************************************************************************************************/
// Configure the root project
apply plugin: "base"
// Apply one top level rat plugin to perform any required license enforcement analysis
apply plugin: "org.nosphere.apache.rat"
rat {
plainOutput = true
xmlOutput = false
htmlOutput = false
failOnError = true
excludes = [
// Ignore any offline repositories the user may have created.
"**/${offlineRepositoryRoot}/**/*",
// Exclude files generated by the Gradle build process
"**/.gradle/**/*",
"**/.gogradle/**/*",
"**/build/**/*",
"**/vendor/**/*",
"**/.gradletasknamecache",
// .gitignore: Ignore files generated by the Maven build process
"**/target/**/*",
"**/bin/**/*",
"**/dependency-reduced-pom.xml",
// .gitignore: Ignore files generated by the Python build process
"**/*.pyc",
"**/*.pyo",
"**/*.pyd",
"**/*.egg-info/**/*",
"**/.eggs/**/*",
"**/nose-*.egg/**/*",
"**/.tox/**/*",
"**/dist/**/*",
"**/distribute-*/**/*",
"**/env/**/*",
"sdks/python/**/*.c",
"sdks/python/**/*.so",
"sdks/python/**/*.egg",
"sdks/python/LICENSE",
"sdks/python/NOTICE",
"sdks/python/README.md",
"sdks/python/apache_beam/portability/api/*pb2*.*",
// .gitignore: Ignore IntelliJ files.
"**/.idea/**/*",
"**/*.iml",
"**/*.ipr",
"**/*.iws",
// .gitignore: Ignore Eclipse files.
"**/.classpath",
"**/.project",
"**/.factorypath",
"**/.checkstyle",
"**/.fbExcludeFilterFile",
"**/.apt_generated/**/*",
"**/.settings/**/*",
// .gitignore: Ignore Visual Studio Code files.
"**/.vscode/**/*",
// .gitignore: Hotspot VM leaves this log in a non-target directory when java crashes
"**/hs_err_pid*.log",
// .gitignore: Ignore files that end with "~", since they
// are most likely auto-save files produced by a text editor.
"**/*~",
// .gitignore: Ignore MacOSX files.
"**/.DS_Store/**/*",
// Ignore files we track but do not distribute
".github/**/*",
"**/package-list",
"**/user.avsc",
"**/test/resources/**/*.txt",
"**/test/**/.placeholder",
// Default eclipse excludes neglect subprojects
// Proto/grpc generated wrappers
"**/apache_beam/portability/api/*_pb2*.py",
"**/go/pkg/beam/model/**/*.pb.go",
// VCF test files
"**/apache_beam/testing/data/vcf/*",
]
}
check.dependsOn rat
// Define a root Java PreCommit task simplifying what is needed
// to be specified on the commandline when executing locally.
def javaPreCommitRoots = [
":sdks:java:core",
":runners:direct-java",
":sdks:java:fn-execution",
]
task javaPreCommit() {
for (String javaPreCommitRoot : javaPreCommitRoots) {
dependsOn javaPreCommitRoot + ":buildNeeded"
dependsOn javaPreCommitRoot + ":buildDependents"
}
dependsOn ":examples:java:preCommit"
}