buildscript { ext.pegasusVersion = '29.6.9' ext.junitJupiterVersion = '5.8.2' apply from: './repositories.gradle' buildscript.repositories.addAll(project.repositories) dependencies { classpath 'com.commercehub.gradle.plugin:gradle-avro-plugin:0.99.99' classpath 'com.diffplug.spotless:spotless-plugin-gradle:5.6.1' classpath 'com.github.node-gradle:gradle-node-plugin:2.2.4' classpath 'com.linkedin.pegasus:gradle-plugins:' + pegasusVersion classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.2.RELEASE' classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.24.5" classpath "org.shipkit:shipkit-auto-version:1.1.1" classpath "org.shipkit:shipkit-changelog:1.1.1" } } project.ext.spec = [ 'product' : [ 'pegasus' : [ 'd2' : 'com.linkedin.pegasus:d2:' + pegasusVersion, 'data' : 'com.linkedin.pegasus:data:' + pegasusVersion, 'dataAvro1_6' : 'com.linkedin.pegasus:data-avro-1_6:' + pegasusVersion, 'generator': 'com.linkedin.pegasus:generator:' + pegasusVersion, 'gradlePlugins': 'com.linkedin.pegasus:gradle-plugins:' + pegasusVersion, 'restliCommon' : 'com.linkedin.pegasus:restli-common:' + pegasusVersion, 'restliClient' : 'com.linkedin.pegasus:restli-client:' + pegasusVersion, 'restliServer' : 'com.linkedin.pegasus:restli-server:' + pegasusVersion, 'restliSpringBridge': 'com.linkedin.pegasus:restli-spring-bridge:' + pegasusVersion, ] ] ] project.ext.externalDependency = [ 'assertJ': 'org.assertj:assertj-core:3.11.1', 'commonsIo': 'commons-io:commons-io:2.16.1', 'commonsLang': 'commons-lang:commons-lang:2.6', 'caffeine': 'com.github.ben-manes.caffeine:caffeine:2.9.2', 'ebean': 'io.ebean:ebean:11.33.3', 'ebeanAgent': 'io.ebean:ebean-agent:11.27.1', 'elasticSearchRest': 'org.elasticsearch.client:elasticsearch-rest-high-level-client:5.6.8', 'elasticSearchTransport': 'org.elasticsearch.client:transport:5.6.8', 'elasticSearchRest7': 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.24', 'elasticSearchTransport7': 'org.elasticsearch.client:transport:7.17.24', 'flywayCore': 'org.flywaydb:flyway-core:7.15.0', 'guava': 'com.google.guava:guava:32.0.0-jre', 'h2': 'com.h2database:h2:1.4.196', 'jacksonCore': 'com.fasterxml.jackson.core:jackson-core:2.17.2', 'jacksonDataBind': 'com.fasterxml.jackson.core:jackson-databind:2.17.2', 'javatuples': 'org.javatuples:javatuples:1.2', 'jsonSimple': 'com.googlecode.json-simple:json-simple:1.1.1', 'junitJupiterApi': "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion", 'junitJupiterParams': "org.junit.jupiter:junit-jupiter-params:$junitJupiterVersion", 'junitJupiterEngine': "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion", 'junitVintageEngine': "org.junit.vintage:junit-vintage-engine:$junitJupiterVersion", 'log4j': 'org.apache.logging.log4j:log4j-slf4j-impl:2.18.0', 'lombok': 'org.projectlombok:lombok:1.18.30', 'lombokAnnotationProcessor': 'org.projectlombok:lombok:1.18.30', 'maria4j': 'ch.vorburger.mariaDB4j:mariaDB4j:2.5.3', 'mockito': 'org.mockito:mockito-core:4.11.0', 'mockitoInline': 'org.mockito:mockito-inline:3.11.2', 'mysql': 'mysql:mysql-connector-java:8.0.29', 'parseqTest': 'com.linkedin.parseq:parseq-test-api:5.1.20', 'postgresql': 'org.postgresql:postgresql:42.2.14', 'reflections': 'org.reflections:reflections:0.9.11', 'rythmEngine': 'org.rythmengine:rythm-engine:1.4.2', 'spock': 'org.spockframework:spock-core:1.3-groovy-2.4', 'testContainers': 'org.testcontainers:testcontainers:1.15.1', 'testContainersJunit': 'org.testcontainers:junit-jupiter:1.15.1', 'testng': 'org.testng:testng:6.9.9' ] apply plugin: 'com.diffplug.spotless' apply from: "./gradle/release.gradle" // TODO expand this to all projects and then delete this allow list. This list is letting us fix errors over time rather // than in one big change. def wErrorProjects = [ project(':core-models'), // project(':dao-api'), // project(':dao-api-impl'), // project(':restli-resources'), project(':testing'), project(':validators') ] allprojects { apply plugin: 'idea' apply plugin: 'eclipse' apply plugin: 'checkstyle' gradle.projectsEvaluated { if (wErrorProjects.contains(project)) { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:all" << "-Werror" << "-Xlint:-deprecation" << // TODO "-Xlint:-processing" << // TODO we have annotations like @Nonnull that need a processor "-Xlint:-serial" // I don't think we care about having custom Exception subclasses be serializable... } } } } subprojects { sp -> apply plugin: 'maven' apply plugin: 'jacoco' plugins.withType(JavaPlugin) { dependencies { testCompile externalDependency.testng } tasks.withType(Test) { useTestNG() } test { finalizedBy jacocoTestReport } checkstyle { configDirectory = file("${project.rootDir}/gradle/checkstyle") sourceSets = [ getProject().sourceSets.main, getProject().sourceSets.test ] toolVersion = "8.35" maxWarnings = 0 ignoreFailures = false } jacocoTestReport { reports { xml.enabled true html.enabled true csv.enabled false } } } afterEvaluate { if (project.plugins.hasPlugin('java')) { sourceCompatibility = 1.8 targetCompatibility = 1.8 } } afterEvaluate { if (project.plugins.hasPlugin('pegasus')) { dependencies { dataTemplateCompile spec.product.pegasus.data restClientCompile spec.product.pegasus.restliClient } } } } spotless { format 'md', { target '**/*.md' targetExclude '.github/**' // GitHub renders these documents differently... prettier().config([printWidth: 120, proseWrap: 'always']) } }