You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by pr...@apache.org on 2019/01/04 21:01:50 UTC

[geode] branch develop updated: GEODE-6237: Opt into publication rather than opting out. (#3038)

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

prhomberg 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 961c75f   GEODE-6237: Opt into publication rather than opting out. (#3038)
961c75f is described below

commit 961c75f56681a66a3056f0d51556803bf7d6ca00
Author: Patrick Rhomberg <pr...@pivotal.io>
AuthorDate: Fri Jan 4 13:01:40 2019 -0800

     GEODE-6237: Opt into publication rather than opting out. (#3038)
    
    * Remove 'disableMavenPublishing' declaration and use.
    * Remove unused publication block that was otherwise disabled in :extensions:geode-modules-assembly.
    * Flatten if/else:'if/else:"if/else:"' logic in publish.gradle
    * Move askpass block to rootProject build.gradle
    * Use relative pathing rather than ${rootDir} in Gradle apply from statements
    
    Co-authored-by: Robert Houghton <rh...@pivotal.io>
    Co-authored-by: Patrick Rhomberg <pr...@pivotal.io>
---
 boms/build.gradle                                  |   1 -
 boms/geode-all-bom/build.gradle                    |   3 +-
 boms/geode-client-bom/build.gradle                 |   1 +
 build.gradle                                       |  38 ++-
 extensions/build.gradle                            |   3 +-
 extensions/geode-modules-assembly/build.gradle     |  15 +-
 .../geode-modules-session-internal/build.gradle    |   3 +-
 extensions/geode-modules-session/build.gradle      |   3 +-
 extensions/geode-modules-test/build.gradle         |   3 +-
 extensions/geode-modules-tomcat7/build.gradle      |   3 +-
 extensions/geode-modules-tomcat8/build.gradle      |   3 +-
 extensions/geode-modules-tomcat9/build.gradle      |   3 +-
 extensions/geode-modules/build.gradle              |   3 +-
 extensions/session-testing-war/build.gradle        |   3 +-
 geode-assembly/build.gradle                        |   4 +-
 geode-assembly/geode-assembly-test/build.gradle    |   3 +-
 geode-common/build.gradle                          |   5 +-
 geode-concurrency-test/build.gradle                |   3 +-
 geode-connectors/build.gradle                      |   3 +-
 geode-core/build.gradle                            |   3 +-
 geode-cq/build.gradle                              |   3 +-
 geode-dunit/build.gradle                           |   3 +-
 geode-experimental-driver/build.gradle             |   3 +-
 geode-json/build.gradle                            |   3 +-
 geode-junit/build.gradle                           |   3 +-
 geode-lucene/build.gradle                          |   3 +-
 geode-lucene/geode-lucene-test/build.gradle        |   3 +-
 geode-old-client-support/build.gradle              |   3 +-
 geode-old-versions/build.gradle                    |   1 -
 geode-protobuf-messages/build.gradle               |   1 +
 geode-protobuf/build.gradle                        |   3 +-
 geode-protobuf/geode-protobuf-test/build.gradle    |   3 +-
 geode-pulse/build.gradle                           |   4 +-
 geode-pulse/geode-pulse-test/build.gradle          |   3 +-
 geode-rebalancer/build.gradle                      |   3 +-
 geode-wan/build.gradle                             |   3 +-
 geode-web-api/build.gradle                         |   3 +-
 geode-web/build.gradle                             |   3 +-
 gradle/geode-dependency-management.gradle          |   2 +-
 gradle/publish.gradle                              | 322 +++++++++------------
 gradle/utilities.gradle                            |  18 --
 41 files changed, 232 insertions(+), 267 deletions(-)

diff --git a/boms/build.gradle b/boms/build.gradle
index c4f796a..8f5c586 100644
--- a/boms/build.gradle
+++ b/boms/build.gradle
@@ -16,5 +16,4 @@
  */
 
 jar.enabled = false
-disableMavenPublishing()
 
diff --git a/boms/geode-all-bom/build.gradle b/boms/geode-all-bom/build.gradle
index 0368f40..d24cb66 100644
--- a/boms/geode-all-bom/build.gradle
+++ b/boms/geode-all-bom/build.gradle
@@ -19,7 +19,8 @@ apply plugin: "java"
 apply plugin: "maven-publish"
 
 jar.enabled = false
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/publish.gradle"
 
 
 publishing {
diff --git a/boms/geode-client-bom/build.gradle b/boms/geode-client-bom/build.gradle
index d037e35..7530369 100644
--- a/boms/geode-client-bom/build.gradle
+++ b/boms/geode-client-bom/build.gradle
@@ -16,6 +16,7 @@
  */
 
 apply plugin: "io.spring.dependency-management"
+apply from: "${project.projectDir}/../../gradle/publish.gradle"
 
 jar.enabled = false
 
diff --git a/build.gradle b/build.gradle
index 35186ea..a4d9843 100755
--- a/build.gradle
+++ b/build.gradle
@@ -76,7 +76,6 @@ 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}/rat.gradle"
@@ -152,3 +151,40 @@ task generate() {
   // injecting themselves as a task dependency into this task.  E.g., via
   // `afterEvaluate.rootProject.generate.dependsOn(generateProto)`
 }
+
+// Prompt the user for a publication passsword to sign archives or upload artifacts, if requested
+if (project.hasProperty('askpass')) {
+  gradle.taskGraph.whenReady { taskGraph ->
+    if(taskGraph.allTasks.any {it instanceof Sign}) {
+      if(!project.hasProperty('signing.keyId') || !project.hasProperty('signing.secretKeyRingFile')) {
+        println "You must configure your signing.keyId and signing.secretKeyRingFile"
+        println "in ~/.gradle/gradle.properties in order to sign jars\n"
+        println "See https://cwiki.apache.org/confluence/display/GEODE/Release+Steps"
+        throw new GradleException("Signing key/keyring is missing")
+      }
+
+      if(!project.hasProperty('signing.password')) {
+        def password = PasswordDialog.askPassword("Please enter your password to unlock your gpg keyring for signing artifacts")
+
+        subprojects { ext."signing.password" = password }
+      }
+    }
+
+    if(taskGraph.allTasks.any {it instanceof PublishToMavenRepository}) {
+      if(!project.hasProperty('mavenUsername')) {
+        println "You must configure your mavenUsername in ~/.gradle/gradle.properties in order to publish\n"
+        println "See https://cwiki.apache.org/confluence/display/GEODE/Release+Steps"
+        throw new GradleException("mavenUsername is missing")
+      }
+      if(!project.hasProperty('mavenPassword')) {
+        def getPassword = PasswordDialog.askPassword("Please enter your apache password to publish to Apache Maven")
+
+        taskGraph.allTasks.each {
+          if(it instanceof PublishToMavenRepository) {
+            (it as PublishToMavenRepository).repository.credentials.password = getPassword
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/extensions/build.gradle b/extensions/build.gradle
index 4ac2a86..0b73607 100755
--- a/extensions/build.gradle
+++ b/extensions/build.gradle
@@ -15,5 +15,4 @@
  * limitations under the License.
  */
 
-disableMavenPublishing()
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
diff --git a/extensions/geode-modules-assembly/build.gradle b/extensions/geode-modules-assembly/build.gradle
index a4fd8d1..9e2e5cc 100644
--- a/extensions/geode-modules-assembly/build.gradle
+++ b/extensions/geode-modules-assembly/build.gradle
@@ -22,7 +22,7 @@ configurations {
   slf4jDeps
 }
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -32,7 +32,6 @@ dependencies {
 
 jar.enabled = true
 
-disableMavenPublishing()
 
 def getJarArtifact(module) {
   project(module).configurations.archives.artifacts.findAll {
@@ -242,15 +241,3 @@ task distTcServer30(type: Zip, dependsOn: [':extensions:geode-modules:assemble',
 task dist(type: Task, dependsOn: ['distTcServer', 'distTcServer30', 'distTomcat', 'distAppServer'])
 
 build.dependsOn dist
-
-publishing {
-  publications {
-    maven(MavenPublication) {
-      artifact distTcServer
-      artifact distTcServer30
-      artifact distAppServer
-      artifact distTomcat
-    }
-  }
-}
-
diff --git a/extensions/geode-modules-session-internal/build.gradle b/extensions/geode-modules-session-internal/build.gradle
index 2091b94..3bbb0c1 100644
--- a/extensions/geode-modules-session-internal/build.gradle
+++ b/extensions/geode-modules-session-internal/build.gradle
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -32,4 +32,3 @@ jar {
   baseName = 'geode-modules-session-internal'
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules-session/build.gradle b/extensions/geode-modules-session/build.gradle
index a925339..b8f6e91 100644
--- a/extensions/geode-modules-session/build.gradle
+++ b/extensions/geode-modules-session/build.gradle
@@ -17,7 +17,7 @@
 
 evaluationDependsOn(":geode-core")
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -64,4 +64,3 @@ jar {
   baseName = 'geode-modules-session'
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules-test/build.gradle b/extensions/geode-modules-test/build.gradle
index d4c01aa..8c88656 100644
--- a/extensions/geode-modules-test/build.gradle
+++ b/extensions/geode-modules-test/build.gradle
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -43,4 +43,3 @@ dependencies {
   }
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules-tomcat7/build.gradle b/extensions/geode-modules-tomcat7/build.gradle
index c8a7b1f..65b9bc9 100644
--- a/extensions/geode-modules-tomcat7/build.gradle
+++ b/extensions/geode-modules-tomcat7/build.gradle
@@ -17,7 +17,7 @@
 
 evaluationDependsOn(":geode-core")
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -58,4 +58,3 @@ eclipse.classpath.file {
   }
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules-tomcat8/build.gradle b/extensions/geode-modules-tomcat8/build.gradle
index 482c349..2c0d2d8 100644
--- a/extensions/geode-modules-tomcat8/build.gradle
+++ b/extensions/geode-modules-tomcat8/build.gradle
@@ -17,7 +17,7 @@
 
 evaluationDependsOn(":geode-core")
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -59,4 +59,3 @@ eclipse.classpath.file {
   }
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules-tomcat9/build.gradle b/extensions/geode-modules-tomcat9/build.gradle
index 64cebbe..3dbc700 100644
--- a/extensions/geode-modules-tomcat9/build.gradle
+++ b/extensions/geode-modules-tomcat9/build.gradle
@@ -17,7 +17,7 @@
 
 evaluationDependsOn(":geode-core")
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -47,4 +47,3 @@ eclipse.classpath.file {
   }
 }
 
-disableMavenPublishing()
diff --git a/extensions/geode-modules/build.gradle b/extensions/geode-modules/build.gradle
index 6fa960c..16c6b87 100644
--- a/extensions/geode-modules/build.gradle
+++ b/extensions/geode-modules/build.gradle
@@ -17,7 +17,7 @@
 
 evaluationDependsOn(":geode-core")
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -61,4 +61,3 @@ dependencies {
   }
 }
 
-disableMavenPublishing()
diff --git a/extensions/session-testing-war/build.gradle b/extensions/session-testing-war/build.gradle
index a9651c6..5f5bcea 100644
--- a/extensions/session-testing-war/build.gradle
+++ b/extensions/session-testing-war/build.gradle
@@ -16,7 +16,7 @@
  */
 apply plugin: 'war'
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -27,4 +27,3 @@ war {
     version = ''
 }
 
-disableMavenPublishing()
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 7bbf541..33da4a2 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -21,7 +21,8 @@ import java.nio.file.Paths
 evaluationDependsOn(":geode-core")
 
 apply plugin: 'distribution'
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 // disable artifact generation for this project
 jar.enabled = false
@@ -394,7 +395,6 @@ distributions {
           exclude relBuild
         }
       }
-
     }
   }
 
diff --git a/geode-assembly/geode-assembly-test/build.gradle b/geode-assembly/geode-assembly-test/build.gradle
index 3663393..d24cd79 100755
--- a/geode-assembly/geode-assembly-test/build.gradle
+++ b/geode-assembly/geode-assembly-test/build.gradle
@@ -16,7 +16,7 @@
  */
 
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -32,4 +32,3 @@ dependencies {
   compileOnly('org.codehaus.cargo:cargo-core-uberjar')
 }
 
-disableMavenPublishing()
diff --git a/geode-common/build.gradle b/geode-common/build.gradle
index 15f5d38..50fbd06 100755
--- a/geode-common/build.gradle
+++ b/geode-common/build.gradle
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
   testCompile('junit:junit')
   testCompile('org.assertj:assertj-core')
-}
\ No newline at end of file
+}
diff --git a/geode-concurrency-test/build.gradle b/geode-concurrency-test/build.gradle
index 316771b..e58a856 100644
--- a/geode-concurrency-test/build.gradle
+++ b/geode-concurrency-test/build.gradle
@@ -14,7 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-connectors/build.gradle b/geode-connectors/build.gradle
index 49d8d37..db41165 100644
--- a/geode-connectors/build.gradle
+++ b/geode-connectors/build.gradle
@@ -24,7 +24,8 @@ repositories {
   }
 }
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 466bcfb..3d1470d 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -17,7 +17,8 @@
 
 apply plugin: 'antlr'
 apply plugin: 'me.champeau.gradle.jmh'
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 sourceSets {
   jca {
diff --git a/geode-cq/build.gradle b/geode-cq/build.gradle
index 3f8f898..ba3f0fc 100644
--- a/geode-cq/build.gradle
+++ b/geode-cq/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-dunit/build.gradle b/geode-dunit/build.gradle
index 8fd20f8..7d29fec 100755
--- a/geode-dunit/build.gradle
+++ b/geode-dunit/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-experimental-driver/build.gradle b/geode-experimental-driver/build.gradle
index 85f80ec..5896c7b 100644
--- a/geode-experimental-driver/build.gradle
+++ b/geode-experimental-driver/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-json/build.gradle b/geode-json/build.gradle
index 4fd5cb6..776a762 100644
--- a/geode-json/build.gradle
+++ b/geode-json/build.gradle
@@ -15,4 +15,5 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
diff --git a/geode-junit/build.gradle b/geode-junit/build.gradle
index 5f2e0d8..83e3d11 100755
--- a/geode-junit/build.gradle
+++ b/geode-junit/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-lucene/build.gradle b/geode-lucene/build.gradle
index e649e5a..61bb7c8 100644
--- a/geode-lucene/build.gradle
+++ b/geode-lucene/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-lucene/geode-lucene-test/build.gradle b/geode-lucene/geode-lucene-test/build.gradle
index b68a490..f16cdeb 100644
--- a/geode-lucene/geode-lucene-test/build.gradle
+++ b/geode-lucene/geode-lucene-test/build.gradle
@@ -16,7 +16,7 @@
  */
 
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -29,4 +29,3 @@ dependencies {
   compile('org.mockito:mockito-core')
 }
 
-disableMavenPublishing()
diff --git a/geode-old-client-support/build.gradle b/geode-old-client-support/build.gradle
index 1a51057..341537c 100644
--- a/geode-old-client-support/build.gradle
+++ b/geode-old-client-support/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-old-versions/build.gradle b/geode-old-versions/build.gradle
index e309ff5..6468986 100644
--- a/geode-old-versions/build.gradle
+++ b/geode-old-versions/build.gradle
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 
-disableMavenPublishing()
 def generatedResources = "$buildDir/generated-resources/main"
 project.ext.installs = new Properties()
 
diff --git a/geode-protobuf-messages/build.gradle b/geode-protobuf-messages/build.gradle
index 73838c0..31dd020 100644
--- a/geode-protobuf-messages/build.gradle
+++ b/geode-protobuf-messages/build.gradle
@@ -17,6 +17,7 @@
 
 apply plugin: 'com.google.protobuf'
 apply plugin: 'idea'
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 buildscript {
diff --git a/geode-protobuf/build.gradle b/geode-protobuf/build.gradle
index b1fb803..33601e0 100644
--- a/geode-protobuf/build.gradle
+++ b/geode-protobuf/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-protobuf/geode-protobuf-test/build.gradle b/geode-protobuf/geode-protobuf-test/build.gradle
index 83b7fdf..8343637 100644
--- a/geode-protobuf/geode-protobuf-test/build.gradle
+++ b/geode-protobuf/geode-protobuf-test/build.gradle
@@ -16,7 +16,7 @@
  */
 
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -28,4 +28,3 @@ dependencies {
   compile('org.mockito:mockito-core')
 }
 
-disableMavenPublishing()
diff --git a/geode-pulse/build.gradle b/geode-pulse/build.gradle
index b68af7f..2090e1e 100644
--- a/geode-pulse/build.gradle
+++ b/geode-pulse/build.gradle
@@ -16,7 +16,8 @@
  */
 apply plugin: 'war'
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
@@ -163,4 +164,3 @@ war.dependsOn(':geode-core:webJar')
 uiTest.dependsOn war
 uiTest.finalizedBy rootProject.combineReports
 rootProject.combineReports.mustRunAfter uiTest
-
diff --git a/geode-pulse/geode-pulse-test/build.gradle b/geode-pulse/geode-pulse-test/build.gradle
index 1aaa530..463a04c 100644
--- a/geode-pulse/geode-pulse-test/build.gradle
+++ b/geode-pulse/geode-pulse-test/build.gradle
@@ -16,7 +16,7 @@
  */
 
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 
 dependencies {
@@ -41,4 +41,3 @@ dependencies {
   compile('org.seleniumhq.selenium:selenium-support')
 }
 
-disableMavenPublishing()
diff --git a/geode-rebalancer/build.gradle b/geode-rebalancer/build.gradle
index 7961369..26059a8 100644
--- a/geode-rebalancer/build.gradle
+++ b/geode-rebalancer/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-wan/build.gradle b/geode-wan/build.gradle
index c15a46b..9605523 100644
--- a/geode-wan/build.gradle
+++ b/geode-wan/build.gradle
@@ -15,7 +15,8 @@
  * limitations under the License.
  */
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-web-api/build.gradle b/geode-web-api/build.gradle
index 6bcc87b..c23bb73 100644
--- a/geode-web-api/build.gradle
+++ b/geode-web-api/build.gradle
@@ -17,7 +17,8 @@
 
 apply plugin: 'war'
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/geode-web/build.gradle b/geode-web/build.gradle
index a1bc7e2..590ceaf 100644
--- a/geode-web/build.gradle
+++ b/geode-web/build.gradle
@@ -17,7 +17,8 @@
 
 apply plugin: 'war'
 
-apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/geode-dependency-management.gradle"
+apply from: "${project.projectDir}/../gradle/publish.gradle"
 
 
 dependencies {
diff --git a/gradle/geode-dependency-management.gradle b/gradle/geode-dependency-management.gradle
index 0ca2904..deec52a 100644
--- a/gradle/geode-dependency-management.gradle
+++ b/gradle/geode-dependency-management.gradle
@@ -16,7 +16,7 @@
  */
 
 // This gradle should be applied as a plugin to every subproject that requires our dependency management
-// E.g.:  apply from: "${rootDir}/${scriptDir}/geode-dependency-management.gradle"
+// E.g.:  apply from: "${project.projectDir}/../../gradle/geode-dependency-management.gradle"
 
 apply plugin: "io.spring.dependency-management"
 
diff --git a/gradle/publish.gradle b/gradle/publish.gradle
index 403c106..40da7df 100644
--- a/gradle/publish.gradle
+++ b/gradle/publish.gradle
@@ -15,78 +15,77 @@
  * limitations under the License.
  */
 
-subprojects {
 
-  apply plugin: 'maven-publish'
-  apply plugin: 'signing'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
 
-  task sourcesJar(type: Jar) {
-    from sourceSets.main.allJava
-    classifier = 'sources'
-  }
+task sourcesJar(type: Jar) {
+  from sourceSets.main.allJava
+  classifier = 'sources'
+}
 
-  task javadocJar(type: Jar) {
-    from javadoc
-    classifier = 'javadoc'
-  }
+task javadocJar(type: Jar) {
+  from javadoc
+  classifier = 'javadoc'
+}
 
-  publishing {
-    publications {
-      maven(MavenPublication) {
-        from components.java
+publishing {
+  publications {
+    maven(MavenPublication) {
+      from components.java
 
-        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
-          }
+      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.
@@ -102,152 +101,109 @@ 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)
           }
         }
       }
     }
-    repositories {
-      maven {
-        if (project.hasProperty("mavenRepository")) {
-          url = project.mavenRepository
-        } else {
-          if (project.isReleaseVersion) {
-            url = "https://repository.apache.org/service/local/staging/deploy/maven2"
-          } else {
-            // If testing from a non-GCE instance, then the shell needs service-account creds
-            // following the instructions at https://cloud.google.com/docs/authentication/production
-            if (project.hasProperty("mavenSnapshotBucket")) {
-              url = "gcs://$project.mavenSnapshotBucket/snapshots"
-            } else {
-              url = "gcs://maven.apachegeode-ci.info/snapshots"
-            }
+  }
+  repositories {
+    maven {
+      if (project.hasProperty("mavenRepository")) {
+        url = project.mavenRepository
+      } else if (project.isReleaseVersion) {
+        url = "https://repository.apache.org/service/local/staging/deploy/maven2"
+      } else if (project.hasProperty("mavenSnapshotBucket")) {
+        // If testing from a non-GCE instance, then the shell needs service-account creds
+        // following the instructions at https://cloud.google.com/docs/authentication/production
+        url = "gcs://$project.mavenSnapshotBucket/snapshots"
+      } else {
+        url = "gcs://maven.apachegeode-ci.info/snapshots"
+      }
+      if (!url.toString().startsWith("gcs:")) {
+        credentials {
+          if (project.hasProperty("mavenUsername")) {
+            username = project.mavenUsername
           }
-        }
-        if (! url.toString().startsWith("gcs:")) {
-          credentials {
-            if (project.hasProperty("mavenUsername")) {
-              username = project.mavenUsername
-            }
-            if (project.hasProperty("mavenPassword")) {
-              password = project.mavenPassword
-            }
+          if (project.hasProperty("mavenPassword")) {
+            password = project.mavenPassword
           }
         }
       }
     }
   }
+}
 
-  signing {
-    required({project.isReleaseVersion && project.hasProperty('signing.keyId') && project.hasProperty('signing.secretKeyRingFile')})
-    sign publishing.publications.maven
-  }
-
-  task install(dependsOn: publishToMavenLocal) {}
-
-  task('checkPom') {
-    dependsOn('generatePomFileForMavenPublication')
-    description 'Checks the generated POM against an expected POM for dependency changes.'
+signing {
+  required({project.isReleaseVersion && project.hasProperty('signing.keyId') && project.hasProperty('signing.secretKeyRingFile')})
+  sign publishing.publications.maven
+}
 
-    doLast {
-      if (tasks.getByName("generatePomFileForMavenPublication").enabled) {
-        def expectedPomFile = sourceSets.test.resources.getSourceDirectories().first().toURI().resolve("expected-pom.xml")
-        if (null == expectedPomFile) {
-          throw new RuntimeException("expected-pom.xml not found.")
-        }
-        def expectedPom = new XmlParser().parse(expectedPomFile.toString())
-        def expectedDependencies = new TreeSet()
-        expectedPom.dependencies.dependency.each() {
-          def dep = it as String
-          if (dep.contains("org.apache.geode")) {
-            // since the project version is the source of truth, use that for comparison instead of
-            // whatever is stored in the expected pom file
-            dep = dep.replaceFirst("(.*\\[)(\\d+.\\d+.\\d+(-SNAPSHOT)?)(\\].*)", '$1' + version + '$4')
-          }
-          expectedDependencies.add(dep)
-        }
+task install(dependsOn: publishToMavenLocal) {}
 
-        def actualPomFile = generatePomFileForMavenPublication.outputs.files.first()
-        def actualPom = new XmlParser().parse(actualPomFile)
-        def actualDependencies = new TreeSet()
-        actualPom.dependencies.dependency.each() {
-          actualDependencies.add(it as String)
-        }
+task('checkPom') {
+  dependsOn('generatePomFileForMavenPublication')
+  description 'Checks the generated POM against an expected POM for dependency changes.'
 
-        if (actualDependencies != expectedDependencies) {
-          def newDependencies = new TreeSet(actualDependencies)
-          newDependencies.removeAll(expectedDependencies)
-          def removedDependencies = new TreeSet(expectedDependencies)
-          removedDependencies.removeAll(actualDependencies)
-
-          def message =
-              "The ".concat(project.name).concat(" pom-default.xml has changed. Verify dependencies.")
-                  .concat("\nWhen changes have been approved, copy :\n")
-                  .concat(" cp ").concat(actualPomFile as String)
-                  .concat(" ").concat(expectedPomFile as String)
-                  .concat("\nRemoved Dependencies\n--------------\n")
-                  .concat(String.join("\n", removedDependencies.each { dep -> dep.toString() }))
-                  .concat("\n\nNew Dependencies\n--------------\n")
-                  .concat(String.join("\n", newDependencies.each { dep -> dep.toString() }))
-                  .concat("\n\n")
-
-
-          throw new RuntimeException(message)
+  doLast {
+    if (tasks.getByName("generatePomFileForMavenPublication").enabled) {
+      def expectedPomFile = sourceSets.test.resources.getSourceDirectories().first().toURI().resolve("expected-pom.xml")
+      if (null == expectedPomFile) {
+        throw new RuntimeException("expected-pom.xml not found.")
+      }
+      def expectedPom = new XmlParser().parse(expectedPomFile.toString())
+      def expectedDependencies = new TreeSet()
+      expectedPom.dependencies.dependency.each() {
+        def dep = it as String
+        if (dep.contains("org.apache.geode")) {
+          // since the project version is the source of truth, use that for comparison instead of
+          // whatever is stored in the expected pom file
+          dep = dep.replaceFirst("(.*\\[)(\\d+.\\d+.\\d+(-SNAPSHOT)?)(\\].*)", '$1' + version + '$4')
         }
+        expectedDependencies.add(dep)
       }
-    }
-  }
-  check.dependsOn('checkPom')
-
-  task updateExpectedPom(dependsOn: generatePomFileForMavenPublication, type: Copy) {
-    description 'After having verified changes with checkPom, this task will perform the copy.'
 
-    def expectedPomDir = sourceSets.test.resources.getSourceDirectories().first().toURI()
-    def actualPomFile = generatePomFileForMavenPublication.outputs.files.first()
-    if (tasks.getByName("generatePomFileForMavenPublication").enabled) {
-      from actualPomFile
-      into expectedPomDir
-      rename '.*.xml', "expected-pom.xml"
-    }
-  }
-  checkPom.mustRunAfter(updateExpectedPom)
-} // subprojects
-
-
-//Prompt the user for a password to sign archives or upload artifacts, if requested
-if (project.hasProperty('askpass')) {
-  gradle.taskGraph.whenReady { taskGraph ->
-    if(taskGraph.allTasks.any {it instanceof Sign}) {
-      if(!project.hasProperty('signing.keyId') || !project.hasProperty('signing.secretKeyRingFile')) {
-        println "You must configure your signing.keyId and signing.secretKeyRingFile"
-        println "in ~/.gradle/gradle.properties in order to sign jars\n"
-        println "See https://cwiki.apache.org/confluence/display/GEODE/Release+Steps"
-        throw new GradleException("Signing key/keyring is missing")
+      def actualPomFile = generatePomFileForMavenPublication.outputs.files.first()
+      def actualPom = new XmlParser().parse(actualPomFile)
+      def actualDependencies = new TreeSet()
+      actualPom.dependencies.dependency.each() {
+        actualDependencies.add(it as String)
       }
 
-      if(!project.hasProperty('signing.password')) {
-        def password = PasswordDialog.askPassword("Please enter your password to unlock your gpg keyring for signing artifacts")
-
-        subprojects { ext."signing.password" = password }
+      if (actualDependencies != expectedDependencies) {
+        def newDependencies = new TreeSet(actualDependencies)
+        newDependencies.removeAll(expectedDependencies)
+        def removedDependencies = new TreeSet(expectedDependencies)
+        removedDependencies.removeAll(actualDependencies)
+
+        def message =
+            "The ".concat(project.name).concat(" pom-default.xml has changed. Verify dependencies.")
+                .concat("\nWhen changes have been approved, copy :\n")
+                .concat(" cp ").concat(actualPomFile as String)
+                .concat(" ").concat(expectedPomFile as String)
+                .concat("\nRemoved Dependencies\n--------------\n")
+                .concat(String.join("\n", removedDependencies.each { dep -> dep.toString() }))
+                .concat("\n\nNew Dependencies\n--------------\n")
+                .concat(String.join("\n", newDependencies.each { dep -> dep.toString() }))
+                .concat("\n\n")
+
+
+        throw new RuntimeException(message)
       }
     }
+  }
+}
+check.dependsOn('checkPom')
 
-    if(taskGraph.allTasks.any {it instanceof PublishToMavenRepository}) {
-      if(!project.hasProperty('mavenUsername')) {
-        println "You must configure your mavenUsername in ~/.gradle/gradle.properties in order to publish\n"
-        println "See https://cwiki.apache.org/confluence/display/GEODE/Release+Steps"
-        throw new GradleException("mavenUsername is missing")
-      }
-      if(!project.hasProperty('mavenPassword')) {
-        def getPassword = PasswordDialog.askPassword("Please enter your apache password to publish to Apache Maven")
+task updateExpectedPom(dependsOn: generatePomFileForMavenPublication, type: Copy) {
+  description 'After having verified changes with checkPom, this task will perform the copy.'
 
-        taskGraph.allTasks.each {
-          if(it instanceof PublishToMavenRepository) {
-            (it as PublishToMavenRepository).repository.credentials.password = getPassword
-          }
-        }
-      }
-    }
+  def expectedPomDir = sourceSets.test.resources.getSourceDirectories().first().toURI()
+  def actualPomFile = generatePomFileForMavenPublication.outputs.files.first()
+  if (tasks.getByName("generatePomFileForMavenPublication").enabled) {
+    from actualPomFile
+    into expectedPomDir
+    rename '.*.xml', "expected-pom.xml"
   }
 }
+checkPom.mustRunAfter(updateExpectedPom)
diff --git a/gradle/utilities.gradle b/gradle/utilities.gradle
index ebd283e..d4152c4 100644
--- a/gradle/utilities.gradle
+++ b/gradle/utilities.gradle
@@ -33,23 +33,5 @@ allprojects {
       def parts = project.name.split("/")
       return parts[parts.length - 1]
     }
-
-    disableMavenPublishing = {
-      // Use this closure when a project should not publish anything to maven.
-      afterEvaluate {
-        tasks.withType(PublishToMavenLocal) {
-          it.enabled = false
-        }
-        tasks.withType(PublishToMavenRepository) {
-          it.enabled = false
-        }
-        tasks.withType(GenerateMavenPom) {
-          it.enabled = false
-        }
-        tasks.withType(Sign) {
-          it.enabled = false
-        }
-      }
-    }
   }
 }