You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2018/08/28 21:58:28 UTC

[geode] branch develop updated: GEODE-5604 Update gradle syntax to comply with 5.0 (#2350)

This is an automated email from the ASF dual-hosted git repository.

jbarrett pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new b3cf86b  GEODE-5604 Update gradle syntax to comply with 5.0 (#2350)
b3cf86b is described below

commit b3cf86b7f8b0e27abe9ffc4cdb0fd18b7df0c3e2
Author: Robert Houghton <rh...@pivotal.io>
AuthorDate: Tue Aug 28 14:58:21 2018 -0700

    GEODE-5604 Update gradle syntax to comply with 5.0 (#2350)
    
    * Fix subproject names for gradle 5.0
    ** stop using '/' and use preferred ':' character for nested projects
    * Update performance profiling plug-in to be Gradle 5.0 compliant
    * Fix input/output warnings on geode-old-versions
    * Don't use custom configuration in geode-modules-assembly
    * All test configurations inherit annotationProcessor from mainSourceSet
    * Using strict maven-publish plugin
    
    Co-authored-by: Dick Cavender <dc...@pivotal.io>
    Co-authored-by: Jacob Barrett <jb...@pivotal.io>
    Co-authored-by: Patrick Rhomberg <pr...@pivotal.io>
    Co-authored-by: Robert Houghton <rh...@pivotal.io>
---
 build.gradle                                       |  4 +-
 buildSrc/build.gradle                              | 10 ++-
 extensions/geode-modules-assembly/build.gradle     | 40 ++++------
 .../geode-modules-session-internal/build.gradle    |  2 +-
 extensions/geode-modules-session/build.gradle      |  2 +-
 extensions/geode-modules-test/build.gradle         |  2 +-
 extensions/geode-modules-tomcat7/build.gradle      |  4 +-
 extensions/geode-modules-tomcat8/build.gradle      |  4 +-
 extensions/geode-modules/build.gradle              |  2 +-
 geode-assembly/build.gradle                        | 29 +++----
 geode-assembly/geode-assembly-test/build.gradle    |  2 +-
 geode-connectors/build.gradle                      |  2 +-
 geode-core/build.gradle                            |  7 +-
 geode-cq/build.gradle                              |  1 +
 geode-lucene/build.gradle                          |  8 +-
 geode-old-client-support/build.gradle              |  2 +-
 geode-old-versions/build.gradle                    |  4 +-
 geode-protobuf/build.gradle                        |  7 +-
 geode-pulse/build.gradle                           |  4 +-
 geode-web-api/build.gradle                         |  1 +
 gradle/ide.gradle                                  | 16 ++--
 gradle/java.gradle                                 |  8 ++
 gradle/publish.gradle                              | 90 +++++++++++-----------
 gradle/sonar.gradle                                |  8 +-
 gradle/test.gradle                                 | 28 +++++--
 settings.gradle                                    | 29 ++++---
 26 files changed, 176 insertions(+), 140 deletions(-)

diff --git a/build.gradle b/build.gradle
index 3539e79..5e94551 100755
--- a/build.gradle
+++ b/build.gradle
@@ -28,7 +28,7 @@ buildscript {
     classpath 'com.bmuschko:gradle-nexus-plugin:2.3.1'
     classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2'
     classpath "com.diffplug.spotless:spotless-plugin-gradle:3.10.0"
-    classpath "me.champeau.gradle:jmh-gradle-plugin:0.3.1"
+    classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7"
     classpath "com.pedjak.gradle.plugins:dockerized-test:0.5.6.2-SNAPSHOT"
     classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
     classpath "com.netflix.nebula:nebula-project-plugin:4.0.1"
@@ -76,13 +76,13 @@ if (name == 'geode') {
 // utilities.gradle MUST be read before publish.gradle for reasons
 apply from: "${scriptDir}/utilities.gradle"
 apply from: "${scriptDir}/java.gradle"
+apply from: "${scriptDir}/ide.gradle"
 apply from: "${scriptDir}/dependency-resolution.gradle"
 apply from: "${scriptDir}/test.gradle"
 apply from: "${scriptDir}/test-by-category.gradle"
 apply from: "${scriptDir}/publish.gradle"
 apply from: "${scriptDir}/code-analysis.gradle"
 apply from: "${scriptDir}/sonar.gradle"
-apply from: "${scriptDir}/ide.gradle"
 apply from: "${scriptDir}/rat.gradle"
 apply from: "${scriptDir}/docker.gradle"
 apply from: "${scriptDir}/spotless.gradle"
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 21cf963..31959ae 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -21,7 +21,13 @@ repositories {
 }
 
 dependencies {
-  compile group: 'org.apache.geode', name: 'geode-junit', version: '1.3.0'
+  compile (group: 'org.apache.geode', name: 'geode-junit', version: '1.3.0') {
+    exclude group: 'org.apache.logging.log4j'
+  }
+
   compile group: 'junit', name: 'junit', version: '4.12'
   compile files("${System.getProperty('java.home')}/../lib/tools.jar")
-}
\ No newline at end of file
+
+  testAnnotationProcessor this.project
+
+}
diff --git a/extensions/geode-modules-assembly/build.gradle b/extensions/geode-modules-assembly/build.gradle
index 10a427a..0952c93 100644
--- a/extensions/geode-modules-assembly/build.gradle
+++ b/extensions/geode-modules-assembly/build.gradle
@@ -19,7 +19,6 @@ import org.apache.tools.ant.filters.ReplaceTokens
 
 configurations {
   slf4jDeps
-  moduleDistOutputs
 }
 
 dependencies {
@@ -51,9 +50,9 @@ def configureTcServerAssembly = {
 
   // All client-server files
   into('geode-cs/lib') {
-    from getJarArtifact(':extensions/geode-modules')
-    from getJarArtifact(':extensions/geode-modules-tomcat7')
-    from getJarArtifact(':extensions/geode-modules-tomcat8')
+    from getJarArtifact(':extensions:geode-modules')
+    from getJarArtifact(':extensions:geode-modules-tomcat7')
+    from getJarArtifact(':extensions:geode-modules-tomcat8')
     from configurations.slf4jDeps
   }
   into('geode-cs/bin') {
@@ -84,9 +83,9 @@ def configureTcServerAssembly = {
   }
   // All peer-to-peer files
   into('geode-p2p/lib') {
-    from getJarArtifact(':extensions/geode-modules')
-    from getJarArtifact(':extensions/geode-modules-tomcat7')
-    from getJarArtifact(':extensions/geode-modules-tomcat8')
+    from getJarArtifact(':extensions:geode-modules')
+    from getJarArtifact(':extensions:geode-modules-tomcat7')
+    from getJarArtifact(':extensions:geode-modules-tomcat8')
     from configurations.slf4jDeps
   }
   into('geode-p2p/bin') {
@@ -147,15 +146,15 @@ def configureTcServer30Assembly = {
   }
 }
 
-task distTomcat(type: Zip, dependsOn: [':extensions/geode-modules:jar', ':extensions/geode-modules-tomcat7:jar', ':extensions/geode-modules-tomcat8:jar']) {
+task distTomcat(type: Zip, dependsOn: [':extensions:geode-modules:jar', ':extensions:geode-modules-tomcat7:jar', ':extensions:geode-modules-tomcat8:jar']) {
   baseName = moduleBaseName
   classifier = "Tomcat"
 
   // All client-server files
   into('lib') {
-    from getJarArtifact(':extensions/geode-modules')
-    from getJarArtifact(':extensions/geode-modules-tomcat7')
-    from getJarArtifact(':extensions/geode-modules-tomcat8')
+    from getJarArtifact(':extensions:geode-modules')
+    from getJarArtifact(':extensions:geode-modules-tomcat7')
+    from getJarArtifact(':extensions:geode-modules-tomcat8')
     from configurations.slf4jDeps
   }
   into('bin') {
@@ -171,14 +170,14 @@ task distTomcat(type: Zip, dependsOn: [':extensions/geode-modules:jar', ':extens
   }
 }
 
-task distAppServer(type: Zip, dependsOn: [':extensions/geode-modules-session:jar', ':extensions/geode-modules-tomcat7:jar', ':extensions/geode-modules-tomcat8:jar']) {
+task distAppServer(type: Zip, dependsOn: [':extensions:geode-modules-session:jar', ':extensions:geode-modules-session-internal:jar', ':extensions:geode-modules-tomcat7:jar', ':extensions:geode-modules-tomcat8:jar']) {
   baseName = moduleBaseName
   classifier = "AppServer"
 
   into('lib') {
-    from getJarArtifact(':extensions/geode-modules-session')
-    from getJarArtifact(':extensions/geode-modules-session-internal')
-    from getJarArtifact(':extensions/geode-modules')
+    from getJarArtifact(':extensions:geode-modules-session')
+    from getJarArtifact(':extensions:geode-modules-session-internal')
+    from getJarArtifact(':extensions:geode-modules')
     from configurations.slf4jDeps
   }
 
@@ -204,22 +203,15 @@ task distAppServer(type: Zip, dependsOn: [':extensions/geode-modules-session:jar
   }
 }
 
-task distTcServer(type: Zip, dependsOn: [':extensions/geode-modules:assemble', ':extensions/geode-modules-tomcat7:assemble', ':extensions/geode-modules-tomcat8:assemble'] ) {
+task distTcServer(type: Zip, dependsOn: [':extensions:geode-modules:assemble', ':extensions:geode-modules-tomcat7:assemble', ':extensions:geode-modules-tomcat8:assemble'] ) {
   configure(configureTcServerAssembly)
 }
 
-task distTcServer30(type: Zip, dependsOn: [':extensions/geode-modules:assemble', ':extensions/geode-modules-tomcat7:assemble', ':extensions/geode-modules-tomcat8:assemble']) {
+task distTcServer30(type: Zip, dependsOn: [':extensions:geode-modules:assemble', ':extensions:geode-modules-tomcat7:assemble', ':extensions:geode-modules-tomcat8:assemble']) {
   configure(configureTcServerAssembly)
   configure(configureTcServer30Assembly)
 }
 
-dependencies {
-  moduleDistOutputs distTcServer.outputs.files
-  moduleDistOutputs distTcServer30.outputs.files
-  moduleDistOutputs distAppServer.outputs.files
-  moduleDistOutputs distTomcat.outputs.files
-}
-
 task dist(type: Task, dependsOn: ['distTcServer', 'distTcServer30', 'distTomcat', 'distAppServer'])
 
 build.dependsOn dist
diff --git a/extensions/geode-modules-session-internal/build.gradle b/extensions/geode-modules-session-internal/build.gradle
index 39c6e55..e1dcc1c 100644
--- a/extensions/geode-modules-session-internal/build.gradle
+++ b/extensions/geode-modules-session-internal/build.gradle
@@ -16,7 +16,7 @@
  */
 
 dependencies {
-  compile project(':extensions/geode-modules')
+  compile project(':extensions:geode-modules')
   compile project(':geode-core')
 }
 
diff --git a/extensions/geode-modules-session/build.gradle b/extensions/geode-modules-session/build.gradle
index b18a4ce..7ac631c 100644
--- a/extensions/geode-modules-session/build.gradle
+++ b/extensions/geode-modules-session/build.gradle
@@ -18,7 +18,7 @@
 evaluationDependsOn(":geode-core")
 
 dependencies {
-  compile project(':extensions/geode-modules-session-internal')
+  compile project(':extensions:geode-modules-session-internal')
   compile project(':geode-core')
 
   integrationTestCompile project(":geode-dunit")
diff --git a/extensions/geode-modules-test/build.gradle b/extensions/geode-modules-test/build.gradle
index 3084802..0ac2b6b 100644
--- a/extensions/geode-modules-test/build.gradle
+++ b/extensions/geode-modules-test/build.gradle
@@ -22,7 +22,7 @@ dependencies {
     exclude module: 'tribes'
   }
 
-  compile(project(':extensions/geode-modules')) {
+  compile(project(':extensions:geode-modules')) {
     // Remove everything related to Tomcat 6.x
     exclude group: 'org.apache.tomcat'
   }
diff --git a/extensions/geode-modules-tomcat7/build.gradle b/extensions/geode-modules-tomcat7/build.gradle
index e1dd8c7..52c53b1 100644
--- a/extensions/geode-modules-tomcat7/build.gradle
+++ b/extensions/geode-modules-tomcat7/build.gradle
@@ -18,7 +18,7 @@
 evaluationDependsOn(":geode-core")
 
 dependencies {
-  compile(project(':extensions/geode-modules')) {
+  compile(project(':extensions:geode-modules')) {
     // Remove everything related to Tomcat 6.x
     exclude group: 'org.apache.tomcat'
   }
@@ -33,7 +33,7 @@ dependencies {
   compile 'org.apache.tomcat:tomcat-juli:' + project.'tomcat7.version'
 
   integrationTestCompile project(":geode-dunit")
-  integrationTestCompile project(":extensions/geode-modules-test")
+  integrationTestCompile project(":extensions:geode-modules-test")
 
   integrationTestRuntime 'javax.annotation:jsr250-api:' + project.'javax.jsr250-api.version'
   integrationTestRuntime 'javax.ejb:ejb-api:' + project.'javax.ejb-api.version'
diff --git a/extensions/geode-modules-tomcat8/build.gradle b/extensions/geode-modules-tomcat8/build.gradle
index 75fd1af..2918cb6 100644
--- a/extensions/geode-modules-tomcat8/build.gradle
+++ b/extensions/geode-modules-tomcat8/build.gradle
@@ -18,7 +18,7 @@
 evaluationDependsOn(":geode-core")
 
 dependencies {
-  compile(project(':extensions/geode-modules')) {
+  compile(project(':extensions:geode-modules')) {
     exclude group: 'org.apache.tomcat'
   }
 
@@ -32,7 +32,7 @@ dependencies {
   compile 'org.apache.tomcat:tomcat-juli:' + project.'tomcat8.version'
   compile 'javax.servlet:javax.servlet-api:' + '3.1.0'
 
-  distributedTestCompile project(":extensions/geode-modules-test")
+  distributedTestCompile project(":extensions:geode-modules-test")
 
   eclipse.classpath.file {
     whenMerged { classpath ->
diff --git a/extensions/geode-modules/build.gradle b/extensions/geode-modules/build.gradle
index 3df7a6e..7083b83 100644
--- a/extensions/geode-modules/build.gradle
+++ b/extensions/geode-modules/build.gradle
@@ -30,7 +30,7 @@ dependencies {
   testCompile 'org.apache.bcel:bcel:' + project.'bcel.version'
 
   integrationTestCompile project(":geode-dunit")
-  integrationTestCompile project(":extensions/geode-modules-test")
+  integrationTestCompile project(":extensions:geode-modules-test")
 
   integrationTestRuntime 'org.apache.tomcat:coyote:' + project.'tomcat6.version'
 }
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index c324e21..a20dee7 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -29,7 +29,7 @@ extraArchive {
 
 publishing {
   publications {
-    maven {
+    maven(MavenPublication) {
       artifactId = 'apache-geode'
 
       artifacts = []
@@ -101,16 +101,16 @@ dependencies {
   integrationTestCompile project(":geode-junit")
   integrationTestCompile project(":geode-dunit")
   integrationTestCompile project(":geode-pulse")
-  integrationTestCompile project(':geode-assembly/geode-assembly-test')
+  integrationTestCompile project(':geode-assembly:geode-assembly-test')
   integrationTestCompile 'org.apache.httpcomponents:httpclient:' + project.'httpclient.version'
 
 
   distributedTestCompile project(':geode-core')
-  distributedTestCompile project(':extensions/session-testing-war')
-  distributedTestCompile project(':geode-assembly/geode-assembly-test')
+  distributedTestCompile project(':extensions:session-testing-war')
+  distributedTestCompile project(':geode-assembly:geode-assembly-test')
   distributedTestCompile 'org.apache.httpcomponents:httpclient:' + project.'httpclient.version'
 
-  distributedTestRuntime (project(':extensions/geode-modules-session-internal')) {
+  distributedTestRuntime (project(':extensions:geode-modules-session-internal')) {
     exclude group: 'org.apache.tomcat'
   }
   distributedTestRuntime group: 'org.codehaus.cargo', name: 'cargo-core-uberjar', version: '1.6.3'
@@ -123,8 +123,8 @@ dependencies {
   uiTestCompile project(':geode-core')
   uiTestCompile project(":geode-dunit")
   uiTestCompile project(":geode-pulse")
-  uiTestCompile project(":geode-pulse/geode-pulse-test")
-  uiTestCompile project(':geode-assembly/geode-assembly-test')
+  uiTestCompile project(":geode-pulse:geode-pulse-test")
+  uiTestCompile project(':geode-assembly:geode-assembly-test')
   uiTestCompile 'org.seleniumhq.selenium:selenium-api:' + project.'selenium.version'
   uiTestCompile 'org.seleniumhq.selenium:selenium-remote-driver:' + project.'selenium.version'
   uiTestCompile 'org.seleniumhq.selenium:selenium-support:' + project.'selenium.version'
@@ -135,11 +135,11 @@ dependencies {
 
   upgradeTestCompile project(':geode-core')
   upgradeTestCompile project(":geode-dunit")
-  upgradeTestCompile project(':geode-assembly/geode-assembly-test')
+  upgradeTestCompile project(':geode-assembly:geode-assembly-test')
 
   upgradeTestRuntime group: 'org.codehaus.cargo', name: 'cargo-core-uberjar', version: '1.6.3'
   upgradeTestRuntime 'org.apache.httpcomponents:httpclient:' + project.'httpclient.version'
-  upgradeTestRuntime project(':extensions/session-testing-war')
+  upgradeTestRuntime project(':extensions:session-testing-war')
 
 
   gfshDependencies ('org.springframework:spring-web:' + project.'springframework.version'){
@@ -444,7 +444,10 @@ distributions {
       }
 
       into ('tools/Modules') {
-        from (project(':extensions/geode-modules-assembly').configurations.moduleDistOutputs.files)
+        from {project(':extensions:geode-modules-assembly').distTcServer}
+        from {project(':extensions:geode-modules-assembly').distTcServer30}
+        from {project(':extensions:geode-modules-assembly').distTomcat}
+        from {project(':extensions:geode-modules-assembly').distAppServer}
       }
     }
   }
@@ -470,10 +473,10 @@ repeatTest dependOnInstalledProduct
 // Make build final task to generate all test and product resources
 build.dependsOn installDist
 
-installDist.dependsOn ':extensions/geode-modules-assembly:dist'
-distributedTest.dependsOn ':extensions/session-testing-war:war'
+installDist.dependsOn ':extensions:geode-modules-assembly:dist'
+distributedTest.dependsOn ':extensions:session-testing-war:war'
 distributedTest.dependsOn ':geode-old-versions:build'
-upgradeTest.dependsOn ':extensions/session-testing-war:war'
+upgradeTest.dependsOn ':extensions:session-testing-war:war'
 upgradeTest.dependsOn ':geode-old-versions:build'
 
 /**Print the names of all jar files in a fileTree */
diff --git a/geode-assembly/geode-assembly-test/build.gradle b/geode-assembly/geode-assembly-test/build.gradle
index 7ae92d1..8111687 100755
--- a/geode-assembly/geode-assembly-test/build.gradle
+++ b/geode-assembly/geode-assembly-test/build.gradle
@@ -20,7 +20,7 @@ dependencies {
 
   compileOnly project(':geode-core')
   compileOnly project(':geode-pulse')
-  compileOnly project(':extensions/geode-modules-test')
+  compileOnly project(':extensions:geode-modules-test')
 
   compileOnly group: 'org.codehaus.cargo', name: 'cargo-core-uberjar', version: '1.6.3'
   compileOnly 'org.assertj:assertj-core:' + project.'assertj-core.version'
diff --git a/geode-connectors/build.gradle b/geode-connectors/build.gradle
index 8b1035e..0880809 100644
--- a/geode-connectors/build.gradle
+++ b/geode-connectors/build.gradle
@@ -44,4 +44,4 @@ dependencies {
   acceptanceTestRuntime group: 'org.postgresql', name: 'postgresql', version: '42.2.2'
 }
 
-integrationTest.forkEvery 0
\ No newline at end of file
+integrationTest.forkEvery 0
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 14db4c8..d4a08df 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -140,6 +140,9 @@ dependencies {
   compile project(':geode-json')
 
 
+  jcaAnnotationProcessor 'org.apache.logging.log4j:log4j-core:' + project.'log4j.version'
+
+
   jcaCompile sourceSets.main.output
 
 
@@ -224,7 +227,9 @@ task createVersionPropertiesFile {
   }
   // onlyIf takes precedence, but we should generate the file whenever the revision is specified.
   outputs.upToDateWhen { false }
-  outputs.file propertiesFile
+  outputs.files {
+    propertiesFile
+  }
 
   doLast {
     def props = [
diff --git a/geode-cq/build.gradle b/geode-cq/build.gradle
index dd4c128..c4eeaa9 100644
--- a/geode-cq/build.gradle
+++ b/geode-cq/build.gradle
@@ -23,6 +23,7 @@ dependencies {
 
   integrationTestCompile project(":geode-dunit")
 
+
   upgradeTestCompile (project(":geode-dunit")) {
     exclude module: 'geode-core'
   }
diff --git a/geode-lucene/build.gradle b/geode-lucene/build.gradle
index 0016275..5506165 100644
--- a/geode-lucene/build.gradle
+++ b/geode-lucene/build.gradle
@@ -26,18 +26,18 @@ dependencies {
   runtimeOnly 'org.apache.lucene:lucene-analyzers-phonetic:' + project.'lucene.version'
 
   testCompile project(':geode-junit')
-  testCompile project(':geode-lucene/geode-lucene-test')
+  testCompile project(':geode-lucene:geode-lucene-test')
   testCompile 'org.apache.lucene:lucene-test-framework:' + project.'lucene.version'
   testCompile 'com.pholser:junit-quickcheck-generators:' + project.'junit-quickcheck.version'
 
 
   integrationTestCompile project(":geode-dunit")
-  integrationTestCompile project(':geode-lucene/geode-lucene-test')
+  integrationTestCompile project(':geode-lucene:geode-lucene-test')
   integrationTestCompile 'org.apache.lucene:lucene-analyzers-phonetic:' + project.'lucene.version'
   integrationTestCompile 'pl.pragmatists:JUnitParams:' + project.'JUnitParams.version'
 
 
-  distributedTestCompile project(':geode-lucene/geode-lucene-test')
+  distributedTestCompile project(':geode-lucene:geode-lucene-test')
   distributedTestCompile 'pl.pragmatists:JUnitParams:' + project.'JUnitParams.version'
 
 
@@ -47,7 +47,7 @@ dependencies {
 
 
   performanceTestCompile project(":geode-junit")
-  performanceTestCompile project(':geode-lucene/geode-lucene-test')
+  performanceTestCompile project(':geode-lucene:geode-lucene-test')
 }
 
 //The lucene integration tests don't have any issues that requiring forking
diff --git a/geode-old-client-support/build.gradle b/geode-old-client-support/build.gradle
index 325bf8e..4b9100b 100644
--- a/geode-old-client-support/build.gradle
+++ b/geode-old-client-support/build.gradle
@@ -16,5 +16,5 @@
  */
 
 dependencies {
-    compile project(':geode-core')
+  compile project(':geode-core')
 }
diff --git a/geode-old-versions/build.gradle b/geode-old-versions/build.gradle
index 64d9863..06de76f 100644
--- a/geode-old-versions/build.gradle
+++ b/geode-old-versions/build.gradle
@@ -83,11 +83,11 @@ def addOldVersion(def source, def geodeVersion, def downloadInstall) {
     project.ext.installs.setProperty(source, "${buildDir}/apache-geode-${geodeVersion}")
 
     task("downloadAndUnzipFile${geodeVersion}") {
-      inputs.file {
+      inputs.files {
         configurations."${source}OldInstall"
       }
 
-      outputs.file("${buildDir}/apache-geode-${geodeVersion}")
+      outputs.dir("${buildDir}/apache-geode-${geodeVersion}")
       doLast {
         copy {
           from zipTree(configurations."${source}OldInstall".singleFile)
diff --git a/geode-protobuf/build.gradle b/geode-protobuf/build.gradle
index 73be98a..c9a031b 100644
--- a/geode-protobuf/build.gradle
+++ b/geode-protobuf/build.gradle
@@ -23,11 +23,12 @@ dependencies {
 
   testCompile project(':geode-core')
   testCompile project(':geode-junit')
-  testCompile project(":geode-protobuf/geode-protobuf-test")
+  testCompile project(":geode-protobuf:geode-protobuf-test")
 
 
   integrationTestCompile project(":geode-dunit")
-  integrationTestCompile project(":geode-protobuf/geode-protobuf-test")
+  integrationTestCompile project(":geode-protobuf:geode-protobuf-test")
 
-  distributedTestCompile project(":geode-protobuf/geode-protobuf-test")
+
+  distributedTestCompile project(":geode-protobuf:geode-protobuf-test")
 }
diff --git a/geode-pulse/build.gradle b/geode-pulse/build.gradle
index 316376e..ce9262e 100755
--- a/geode-pulse/build.gradle
+++ b/geode-pulse/build.gradle
@@ -73,13 +73,13 @@ dependencies {
 
   integrationTestCompile project(':geode-junit')
   integrationTestCompile project(':geode-core')
-  integrationTestCompile project(':geode-pulse/geode-pulse-test')
+  integrationTestCompile project(':geode-pulse:geode-pulse-test')
   integrationTestCompile 'org.springframework:spring-test:' + project.'springframework.version'
 
 
   uiTestCompile project(':geode-junit')
   uiTestCompile project(':geode-json')
-  uiTestCompile project(':geode-pulse/geode-pulse-test')
+  uiTestCompile project(':geode-pulse:geode-pulse-test')
   uiTestCompile 'org.seleniumhq.selenium:selenium-remote-driver:' + project.'selenium.version'
 
   uiTestRuntime project(':geode-core')
diff --git a/geode-web-api/build.gradle b/geode-web-api/build.gradle
index 682bc63..80b60e1 100755
--- a/geode-web-api/build.gradle
+++ b/geode-web-api/build.gradle
@@ -20,6 +20,7 @@ apply plugin: 'war'
 dependencies {
 
   compileOnly project(':geode-core')
+
   compileOnly 'javax.servlet:javax.servlet-api:' + project.'javax.servlet-api.version'
 
   compile 'commons-lang:commons-lang:' + project.'commons-lang.version'
diff --git a/gradle/ide.gradle b/gradle/ide.gradle
index a8ea46d..164c820 100644
--- a/gradle/ide.gradle
+++ b/gradle/ide.gradle
@@ -30,7 +30,7 @@ subprojects {
             // Remove the gradle output directories from the eclipse classpath.
             // Unfortunately, using minusConfigurations does not work here, because
             // it removes the entire geode-core project.
-            classpath.entries.removeAll { entry -> 
+            classpath.entries.removeAll { entry ->
               (entry.path.contains('geode-core/build') ||
               entry.path.contains('geode-web/build') ||
               entry.path.contains('geode-assembly/build') ||
@@ -41,10 +41,10 @@ subprojects {
 
             //By default, gradle adds the java 1.8 *execution environment*, which has access restrictions on
             //things like Unsafe. Change it to a direct dependency on the workspace JDK
-            classpath.entries = classpath.entries.collect { entry -> 
-              entry.path.contains('org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE')
-                ? new Container('org.eclipse.jdt.launching.JRE_CONTAINER')
-                : entry
+            classpath.entries = classpath.entries.collect { entry ->
+              entry.path.contains('org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE') ?
+                      new Container('org.eclipse.jdt.launching.JRE_CONTAINER') :
+                      entry
             }
         }
       }
@@ -70,13 +70,13 @@ subprojects {
       delete '.settings/org.eclipse.core.resources.prefs'
     }
   }
-  
+
   tasks.eclipse.dependsOn(cleanEclipse)
-  
+
   idea {
     module {
       downloadSources = true
     }
   }
 }
-  
+
diff --git a/gradle/java.gradle b/gradle/java.gradle
index a55b74a..d525813 100644
--- a/gradle/java.gradle
+++ b/gradle/java.gradle
@@ -16,6 +16,8 @@
  */
 
 allprojects {
+  // There exist peculiarities surrounding our handling of ClassLoaders and cross-module resources,
+  // causing test failures if we apply the newer 'java-library' plugin.
   apply plugin: 'java'
   sourceCompatibility = 1.8
   targetCompatibility = 1.8
@@ -24,6 +26,12 @@ allprojects {
 
 subprojects {
 
+  dependencies {
+    // log4j-core has an annotation processor that is passed on the compile-classpath via geode-core and others.
+    // Fix Gradle warning here until we clean up our own classpath
+    annotationProcessor 'org.apache.logging.log4j:log4j-core:' + project.'log4j.version'
+  }
+
   String javaVersion = System.properties['java.version']
   if (javaVersion.startsWith("1.8.0") && javaVersion.split("_")[1].toInteger() < 121) {
     throw new GradleException("Java version 1.8.0_121 or later required, but was " + javaVersion)
diff --git a/gradle/publish.gradle b/gradle/publish.gradle
index 7e47a0c..18810d8 100644
--- a/gradle/publish.gradle
+++ b/gradle/publish.gradle
@@ -132,57 +132,58 @@ subprojects {
       maven(MavenPublication) {
         from components.java
 
-        // uses the tasks created by nexus for sources and javadoc
-        if (!getTasksByName('sourcesJar', false).isEmpty()) {
-          artifact sourcesJar
-        }
-        if (!getTasksByName('javadocJar', false).isEmpty()) {
-          artifact javadocJar
-        }
+        afterEvaluate {
+          // uses the tasks created by nexus for sources and javadoc
+          if (!getTasksByName('sourcesJar', false).isEmpty()) {
+            artifact sourcesJar
+          }
+          if (!getTasksByName('javadocJar', false).isEmpty()) {
+            artifact javadocJar
+          }
 
-        pom {
-          name = 'Apache Geode'
-          description = 'Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing'
-          url = 'http://geode.apache.org'
+          pom {
+            name = 'Apache Geode'
+            description = 'Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing'
+            url = 'http://geode.apache.org'
 
-          scm {
-            url = 'https://github.com/apache/geode'
-            connection = 'scm:git:https://github.com:apache/geode.git'
-            developerConnection = 'scm:git:https://github.com:apache/geode.git'
-          }
+            scm {
+              url = 'https://github.com/apache/geode'
+              connection = 'scm:git:https://github.com:apache/geode.git'
+              developerConnection = 'scm:git:https://github.com:apache/geode.git'
+            }
 
-          licenses {
-            license {
-              name = 'The Apache Software License, Version 2.0'
-              url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+            licenses {
+              license {
+                name = 'The Apache Software License, Version 2.0'
+                url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+              }
             }
-          }
 
-          withXml {
-            //This black magic checks to see if a dependency has the flag ext.optional=true
-            //set on it, and if so marks the dependency as optional in the maven pom
-            def depMap = project.configurations.compile.dependencies.collectEntries { [it.name, it] }
-            def runtimeDeps = project.configurations.runtime.dependencies.collectEntries { [it.name, it] }
-            def runtimeOnlyDeps = project.configurations.runtimeOnly.dependencies.collectEntries { [it.name, it] }
-            depMap.putAll(runtimeDeps)
-            depMap.putAll(runtimeOnlyDeps)
-            asNode().dependencies.dependency.findAll {
-              def dep = depMap.get(it.artifactId.text())
-              return dep?.hasProperty('optional') && dep.optional
-            }.each {
-              if (it.optional) {
-                it.optional.value = 'true'
-              } else {
-                it.appendNode('optional', 'true')
+            withXml {
+              //This black magic checks to see if a dependency has the flag ext.optional=true
+              //set on it, and if so marks the dependency as optional in the maven pom
+              def depMap = project.configurations.compile.dependencies.collectEntries { [it.name, it] }
+              def runtimeDeps = project.configurations.runtime.dependencies.collectEntries { [it.name, it] }
+              def runtimeOnlyDeps = project.configurations.runtimeOnly.dependencies.collectEntries { [it.name, it] }
+              depMap.putAll(runtimeDeps)
+              depMap.putAll(runtimeOnlyDeps)
+              asNode().dependencies.dependency.findAll {
+                def dep = depMap.get(it.artifactId.text())
+                return dep?.hasProperty('optional') && dep.optional
+              }.each {
+                if (it.optional) {
+                  it.optional.value = 'true'
+                } else {
+                  it.appendNode('optional', 'true')
+                }
               }
             }
           }
-        }
-        pom {
-          withXml {
-            def elem = asElement()
-            def hdr = elem.ownerDocument().createComment(
-                    '''
+          pom {
+            withXml {
+              def elem = asElement()
+              def hdr = elem.ownerDocument().createComment(
+                      '''
   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.
@@ -198,7 +199,8 @@ subprojects {
   See the License for the specific language governing permissions and
   limitations under the License.
   ''')
-            elem.insertBefore(hdr, elem.firstChild)
+              elem.insertBefore(hdr, elem.firstChild)
+            }
           }
         }
       }
diff --git a/gradle/sonar.gradle b/gradle/sonar.gradle
index 32f1883..e93e6e2 100644
--- a/gradle/sonar.gradle
+++ b/gradle/sonar.gradle
@@ -30,25 +30,25 @@ sonarqube {
   }
 }
 
-project("extensions/geode-modules") {
+project("extensions:geode-modules") {
   sonarqube {
     skipProject = true
   }
 }
 
-project("extensions/geode-modules-assembly") {
+project("extensions:geode-modules-assembly") {
   sonarqube {
     skipProject = true
   }
 }
 
-project("extensions/geode-modules-session") {
+project("extensions:geode-modules-session") {
   sonarqube {
     skipProject = true
   }
 }
 
-project("extensions/geode-modules-tomcat7") {
+project("extensions:geode-modules-tomcat7") {
   sonarqube {
     skipProject = true
   }
diff --git a/gradle/test.gradle b/gradle/test.gradle
index 751c20e..e12b66b 100644
--- a/gradle/test.gradle
+++ b/gradle/test.gradle
@@ -62,6 +62,8 @@ subprojects {
     }
   }
 
+  // This configuration might be safely removed once the CategoryWithParameterizedRunnerFactory
+  // and associated classes are themselves removed, per GEODE-5606
   configurations {
     apt
   }
@@ -72,7 +74,8 @@ subprojects {
       transitive = false
     }
     // Because EnsureCorrectRunsWithProcessor needs access to
-    // CategoryWithParameterizedRunnerFactory. The specific version of geode-junit is not important.
+    // CategoryWithParameterizedRunnerFactory.
+    // buildSrc uses version 1.3.0, so we use it here instead of the local geode-junit project
     apt(group: 'org.apache.geode', name: 'geode-junit', version: '1.3.0') {
       transitive = false
     }
@@ -121,13 +124,22 @@ subprojects {
     }
   }
 
-  // Facets does not extend the new runtimeOnly configurations
-  configurations.integrationTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
-  configurations.distributedTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
-  configurations.performanceTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
-  configurations.acceptanceTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
-  configurations.uiTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
-  configurations.upgradeTestRuntimeOnly.extendsFrom(configurations.runtimeOnly)
+  configurations {
+    testAnnotationProcessor.extendsFrom annotationProcessor
+    integrationTestAnnotationProcessor.extendsFrom annotationProcessor
+    distributedTestAnnotationProcessor.extendsFrom annotationProcessor
+    performanceTestAnnotationProcessor.extendsFrom annotationProcessor
+    acceptanceTestAnnotationProcessor.extendsFrom annotationProcessor
+    uiTestAnnotationProcessor.extendsFrom annotationProcessor
+    upgradeTestAnnotationProcessor.extendsFrom annotationProcessor
+    // Facets does not extend the new runtimeOnly configurations
+    integrationTestRuntimeOnly.extendsFrom(runtimeOnly)
+    distributedTestRuntimeOnly.extendsFrom(runtimeOnly)
+    performanceTestRuntimeOnly.extendsFrom(runtimeOnly)
+    acceptanceTestRuntimeOnly.extendsFrom(runtimeOnly)
+    uiTestRuntimeOnly.extendsFrom(runtimeOnly)
+    upgradeTestRuntimeOnly.extendsFrom(runtimeOnly)
+  }
 
   dependencies {
     integrationTestCompile 'org.jmock:jmock-junit4:' + project.'jmock.version'
diff --git a/settings.gradle b/settings.gradle
index 11d3d06..6225baf 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,6 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
+import org.gradle.util.GradleVersion
+
 rootProject.name = 'geode'
 
 include 'geode-old-versions'
@@ -25,28 +28,28 @@ include 'geode-core'
 include 'geode-web'
 include 'geode-web-api'
 include 'geode-pulse'
-include 'geode-pulse/geode-pulse-test'
+include 'geode-pulse:geode-pulse-test'
 include 'geode-assembly'
-include 'geode-assembly/geode-assembly-test'
+include 'geode-assembly:geode-assembly-test'
 include 'geode-rebalancer'
 include 'geode-lucene'
-include 'geode-lucene/geode-lucene-test'
+include 'geode-lucene:geode-lucene-test'
 include 'geode-old-client-support'
 include 'geode-wan'
 include 'geode-cq'
 include 'geode-connectors'
-include 'extensions/geode-modules'
-include 'extensions/geode-modules-test'
-include 'extensions/geode-modules-tomcat7'
-include 'extensions/geode-modules-tomcat8'
-include 'extensions/geode-modules-session-internal'
-include 'extensions/geode-modules-session'
-include 'extensions/geode-modules-assembly'
+include 'extensions:geode-modules'
+include 'extensions:geode-modules-test'
+include 'extensions:geode-modules-tomcat7'
+include 'extensions:geode-modules-tomcat8'
+include 'extensions:geode-modules-session-internal'
+include 'extensions:geode-modules-session'
+include 'extensions:geode-modules-assembly'
 include 'geode-protobuf'
-include 'geode-protobuf/geode-protobuf-test'
+include 'geode-protobuf:geode-protobuf-test'
 include 'geode-experimental-driver'
 include 'geode-protobuf-messages'
-include 'extensions/session-testing-war'
+include 'extensions:session-testing-war'
 include 'geode-concurrency-test'
 
 
@@ -54,6 +57,8 @@ if (GradleVersion.current() < GradleVersion.version(minimumGradleVersion)) {
   throw new GradleException('Running with unsupported Gradle Version. Use Gradle Wrapper or with Gradle version >= ' + minimumGradleVersion)
 }
 
+enableFeaturePreview('STABLE_PUBLISHING')
+
 buildCache {
   local {
     enabled = true