You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2017/02/25 11:30:11 UTC

[3/4] polygene-java git commit: build: api/impl separation, compile avoidance and incremental compile

build: api/impl separation, compile avoidance and incremental compile

Leverage the new java-library plugin and now stable incremental java
compilation.

Benefits:
- API and implementation separation
- compile avoidance when making ABI compatible changes
- incremental compilation of java sources

See https://docs.gradle.org/current/userguide/java_library_plugin.html
and https://docs.gradle.org/current/release-notes.html#faster-java-incremental-compilation


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/c8eb9bdf
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/c8eb9bdf
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/c8eb9bdf

Branch: refs/heads/develop
Commit: c8eb9bdf303bd8f7e110c90f3a6bf064eca9b393
Parents: 16c9ccb
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Feb 25 12:09:01 2017 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Sat Feb 25 12:10:34 2017 +0100

----------------------------------------------------------------------
 .../polygene/gradle/code/CodePlugin.groovy      |  3 +-
 .../tests/PerformanceTestsPlugin.groovy         |  8 ++---
 core/api/build.gradle                           |  8 ++---
 core/bootstrap/build.gradle                     |  4 +--
 core/runtime/build.gradle                       | 14 ++++----
 core/spi/build.gradle                           | 10 +++---
 core/testsupport/build.gradle                   |  6 ++--
 extensions/cache-ehcache/build.gradle           | 15 ++++----
 extensions/cache-memcache/build.gradle          | 13 +++----
 extensions/entitystore-cassandra/build.gradle   | 17 ++++-----
 extensions/entitystore-file/build.gradle        | 17 ++++-----
 extensions/entitystore-geode/build.gradle       | 15 ++++----
 extensions/entitystore-hazelcast/build.gradle   | 15 ++++----
 extensions/entitystore-jclouds/build.gradle     | 25 +++++++-------
 extensions/entitystore-jdbm/build.gradle        | 19 ++++++-----
 extensions/entitystore-leveldb/build.gradle     | 21 ++++++------
 extensions/entitystore-memory/build.gradle      | 10 +++---
 extensions/entitystore-mongodb/build.gradle     | 17 ++++-----
 extensions/entitystore-preferences/build.gradle | 14 ++++----
 extensions/entitystore-redis/build.gradle       | 16 ++++-----
 extensions/entitystore-riak/build.gradle        | 18 +++++-----
 extensions/entitystore-sql/build.gradle         | 29 ++++++++--------
 extensions/indexing-elasticsearch/build.gradle  | 15 ++++----
 extensions/indexing-rdf/build.gradle            | 20 +++++------
 extensions/indexing-solr/build.gradle           | 19 ++++++-----
 extensions/indexing-sql/build.gradle            | 29 ++++++++--------
 extensions/metrics-codahale/build.gradle        | 14 ++++----
 extensions/migration/build.gradle               | 13 +++----
 extensions/reindexer/build.gradle               | 17 ++++-----
 .../valueserialization-jackson/build.gradle     | 12 +++----
 .../valueserialization-orgjson/build.gradle     |  9 +++--
 extensions/valueserialization-stax/build.gradle | 12 +++----
 internals/testsupport-internal/build.gradle     |  6 ++--
 libraries/alarm/build.gradle                    | 10 +++---
 libraries/circuitbreaker/build.gradle           | 14 ++++----
 libraries/constraints/build.gradle              | 10 +++---
 libraries/fileconfig/build.gradle               | 13 +++----
 libraries/http/build.gradle                     | 28 ++++++++-------
 libraries/invocation-cache/build.gradle         | 13 +++----
 libraries/jmx/build.gradle                      | 12 +++----
 libraries/lang-groovy/build.gradle              | 13 +++----
 libraries/lang-javascript/build.gradle          | 13 +++----
 libraries/locking/build.gradle                  | 10 +++---
 libraries/logging/build.gradle                  | 13 +++----
 libraries/metrics/build.gradle                  | 10 +++---
 libraries/osgi/build.gradle                     | 16 ++++-----
 libraries/rdf/build.gradle                      | 19 ++++++-----
 libraries/rest-client/build.gradle              | 14 ++++----
 libraries/rest-common/build.gradle              | 10 +++---
 libraries/rest-server/build.gradle              | 20 ++++++-----
 libraries/rest/build.gradle                     | 23 +++++++------
 libraries/restlet/build.gradle                  | 24 ++++++-------
 libraries/scripting/build.gradle                |  8 ++---
 libraries/servlet/build.gradle                  | 18 +++++-----
 libraries/shiro-core/build.gradle               | 23 +++++++------
 libraries/shiro-web/build.gradle                | 36 +++++++++++---------
 libraries/spring/build.gradle                   | 14 ++++----
 libraries/sql-bonecp/build.gradle               |  6 ++--
 libraries/sql-dbcp/build.gradle                 |  6 ++--
 libraries/sql-liquibase/build.gradle            | 18 +++++-----
 libraries/sql/build.gradle                      | 35 ++++++++++---------
 libraries/uid/build.gradle                      | 10 +++---
 libraries/uowfile/build.gradle                  | 12 ++++---
 manual/build.gradle                             | 11 +++---
 samples/dci/build.gradle                        | 14 ++++----
 samples/forum/build.gradle                      | 22 ++++++------
 samples/rental/build.gradle                     |  6 ++--
 samples/sql-support/build.gradle                | 16 ++++-----
 samples/swing/build.gradle                      |  7 ++--
 tests/performance/build.gradle                  | 28 +++++++--------
 tests/regression/build.gradle                   | 16 ++++-----
 tools/envisage/build.gradle                     | 19 ++++++-----
 tools/model-detail/build.gradle                 | 11 +++---
 tools/qidea/build.gradle                        | 10 +++---
 tutorials/cargo/build.gradle                    | 12 +++----
 tutorials/composites/build.gradle               | 10 +++---
 tutorials/hello/build.gradle                    | 12 +++----
 tutorials/introduction/build.gradle             | 10 +++---
 tutorials/introduction/tenminutes/build.gradle  | 10 +++---
 .../introduction/thirtyminutes/build.gradle     | 12 +++----
 tutorials/introduction/twominutes/build.gradle  | 10 +++---
 tutorials/services/build.gradle                 | 10 +++---
 82 files changed, 621 insertions(+), 576 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy
index 1de5f10..1448341 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy
@@ -54,13 +54,14 @@ class CodePlugin implements Plugin<Project>
 
   private static void applyJava( Project project )
   {
-    project.plugins.apply 'java'
+    project.plugins.apply 'java-library'
     def javaConvention = project.convention.getPlugin JavaPluginConvention
     javaConvention.targetCompatibility = JavaVersion.VERSION_1_8
     javaConvention.sourceCompatibility = JavaVersion.VERSION_1_8
     project.tasks.withType( JavaCompile ) { JavaCompile task ->
       task.options.encoding = 'UTF-8'
       task.options.compilerArgs << '-Xlint:deprecation'
+      task.options.incremental = true
     }
   }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
----------------------------------------------------------------------
diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
index a1890d8..3b10b2f 100644
--- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/tests/PerformanceTestsPlugin.groovy
@@ -44,10 +44,10 @@ class PerformanceTestsPlugin implements Plugin<Project>
   {
     def sourceSets = project.convention.getPlugin( JavaPluginConvention ).sourceSets
     sourceSets.create 'perf'
-    project.dependencies.add 'perfCompile', sourceSets.getByName( 'main' ).output
-    project.dependencies.add 'perfCompile', sourceSets.getByName( 'test' ).output
-    project.dependencies.add 'perfCompile', project.configurations.getByName( 'testCompile' )
-    project.dependencies.add 'perfRuntime', project.configurations.getByName( 'testRuntime' )
+    project.dependencies.add 'perfImplementation', sourceSets.getByName( 'main' ).output
+    project.dependencies.add 'perfImplementation', sourceSets.getByName( 'test' ).output
+    project.dependencies.add 'perfImplementation', project.configurations.getByName( 'testImplementation' )
+    project.dependencies.add 'perfRuntimeOnly', project.configurations.getByName( 'testRuntimeOnly' )
     project.tasks.getByName( LifecycleBasePlugin.CHECK_TASK_NAME ).dependsOn 'compilePerfJava'
     project.tasks.create( TaskNames.PERFORMANCE_TEST, Test, { Test task ->
       task.group = TaskGroups.PERFORMANCE

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/core/api/build.gradle
----------------------------------------------------------------------
diff --git a/core/api/build.gradle b/core/api/build.gradle
index df4ad7c..b210fac 100644
--- a/core/api/build.gradle
+++ b/core/api/build.gradle
@@ -23,9 +23,9 @@ apply plugin: 'polygene-core'
 jar { manifest { name = "Apache Polygene\u2122 Core API" } }
 
 dependencies {
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'constraints' )
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'constraints' )
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
 
-  testRuntime polygene.core.runtime
+  testRuntimeOnly polygene.core.runtime
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/core/bootstrap/build.gradle
----------------------------------------------------------------------
diff --git a/core/bootstrap/build.gradle b/core/bootstrap/build.gradle
index f005d2b..594c1e2 100644
--- a/core/bootstrap/build.gradle
+++ b/core/bootstrap/build.gradle
@@ -23,7 +23,7 @@ apply plugin: 'polygene-core'
 jar { manifest { name = "Apache Polygene\u2122 Core Bootstrap" } }
 
 dependencies {
-  compile polygene.core.spi
+  api polygene.core.spi
 
-  testRuntime polygene.core.runtime
+  testRuntimeOnly polygene.core.runtime
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/core/runtime/build.gradle
----------------------------------------------------------------------
diff --git a/core/runtime/build.gradle b/core/runtime/build.gradle
index 9e1be8f..e2c52ad 100644
--- a/core/runtime/build.gradle
+++ b/core/runtime/build.gradle
@@ -25,11 +25,13 @@ jar { manifest { name = "Apache Polygene\u2122 Core Runtime" } }
 dependencies {
   compileOnly libraries.osgi_core
 
-  compile polygene.core.bootstrap
-  compile libraries.asm
-  compile libraries.asm_util
-  compile libraries.asm_commons
+  api polygene.core.spi
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'constraints' )
+  implementation polygene.core.bootstrap
+  implementation libraries.asm
+  implementation libraries.asm_util
+  implementation libraries.asm_commons
+
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'constraints' )
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/core/spi/build.gradle
----------------------------------------------------------------------
diff --git a/core/spi/build.gradle b/core/spi/build.gradle
index 8d1af06..b6240e9 100644
--- a/core/spi/build.gradle
+++ b/core/spi/build.gradle
@@ -23,11 +23,11 @@ apply plugin: 'polygene-core'
 jar { manifest { name = "Apache Polygene\u2122 Core SPI" } }
 
 dependencies {
-  compile polygene.core.api
-  compile libraries.org_json
+  api polygene.core.api
+  api libraries.org_json
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime polygene.core.runtime
-  testRuntime libraries.logback
+  testRuntimeOnly polygene.core.runtime
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/core/testsupport/build.gradle
----------------------------------------------------------------------
diff --git a/core/testsupport/build.gradle b/core/testsupport/build.gradle
index bde2c50..dd05437 100644
--- a/core/testsupport/build.gradle
+++ b/core/testsupport/build.gradle
@@ -23,8 +23,8 @@ apply plugin: 'polygene-core'
 jar { manifest { name = "Apache Polygene\u2122 Core Test Support" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.junit
+  api polygene.core.bootstrap
+  api libraries.junit
 
-  testRuntime polygene.core.runtime
+  testRuntimeOnly polygene.core.runtime
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/cache-ehcache/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/cache-ehcache/build.gradle b/extensions/cache-ehcache/build.gradle
index 2e7ae19..279ed20 100644
--- a/extensions/cache-ehcache/build.gradle
+++ b/extensions/cache-ehcache/build.gradle
@@ -25,14 +25,15 @@ description = "Apache Polygene\u2122 Ehcache Cache Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension: EhCache" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'constraints' )
-  compile libraries.ehcache
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'constraints' )
+  implementation libraries.ehcache
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/cache-memcache/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/cache-memcache/build.gradle b/extensions/cache-memcache/build.gradle
index 5251c4d..034661e 100644
--- a/extensions/cache-memcache/build.gradle
+++ b/extensions/cache-memcache/build.gradle
@@ -25,13 +25,14 @@ description = "Apache Polygene\u2122 Memcache Cache Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Cache - Memcache" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.spymemcached
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.spymemcached
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-cassandra/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/build.gradle b/extensions/entitystore-cassandra/build.gradle
index 6e773c5..ffe2cd8 100644
--- a/extensions/entitystore-cassandra/build.gradle
+++ b/extensions/entitystore-cassandra/build.gradle
@@ -25,15 +25,16 @@ description = "Apache Polygene\u2122 Cassandra EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Cassandra" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile libraries.cassandra_client
-  compile libraries.jackson_mapper
+  api polygene.core.bootstrap
+  api libraries.cassandra_client
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation libraries.jackson_mapper
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.extension( 'valueserialization-jackson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.extension( 'valueserialization-jackson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-file/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-file/build.gradle b/extensions/entitystore-file/build.gradle
index a1b6378..bc73c80 100644
--- a/extensions/entitystore-file/build.gradle
+++ b/extensions/entitystore-file/build.gradle
@@ -23,15 +23,16 @@ apply plugin: 'polygene-extension'
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - File system" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile polygene.library( 'constraints' )
-  compile polygene.library( 'fileconfig' )
+  api polygene.core.bootstrap
+  api polygene.library( 'fileconfig' )
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation polygene.library( 'constraints' )
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-geode/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-geode/build.gradle b/extensions/entitystore-geode/build.gradle
index 146993c..e38e9f1 100644
--- a/extensions/entitystore-geode/build.gradle
+++ b/extensions/entitystore-geode/build.gradle
@@ -25,14 +25,15 @@ description = "Apache Polygene\u2122 Geode EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Geode" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile libraries.geode
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation libraries.geode
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-hazelcast/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/build.gradle b/extensions/entitystore-hazelcast/build.gradle
index 15c84b2..176f586 100644
--- a/extensions/entitystore-hazelcast/build.gradle
+++ b/extensions/entitystore-hazelcast/build.gradle
@@ -25,14 +25,15 @@ description = "Apache Polygene\u2122 Hazelcast EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Hazelcast" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile libraries.hazelcast
+  api polygene.core.bootstrap
+  api libraries.hazelcast
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-jclouds/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jclouds/build.gradle b/extensions/entitystore-jclouds/build.gradle
index 5e29bf0..f0ccb8e 100644
--- a/extensions/entitystore-jclouds/build.gradle
+++ b/extensions/entitystore-jclouds/build.gradle
@@ -25,19 +25,20 @@ description = "Apache Polygene\u2122 JClouds EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - JClouds" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile polygene.library( 'fileconfig' )
-  compile libraries.jclouds_core
-  compile libraries.jclouds_blobstore
+  api polygene.core.bootstrap
+  api polygene.library( 'fileconfig' )
 
-  runtime polygene.core.runtime
-  runtime libraries.jaxb_api
+  implementation polygene.library( 'locking' )
+  implementation libraries.slf4j_api
+  implementation libraries.jclouds_core
+  implementation libraries.jclouds_blobstore
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
-  testCompile libraries.jclouds_filesystem
+  runtimeOnly polygene.core.runtime
+  runtimeOnly libraries.jaxb_api
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+  testImplementation libraries.jclouds_filesystem
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-jdbm/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-jdbm/build.gradle b/extensions/entitystore-jdbm/build.gradle
index 60f68a5..4cfbdea 100644
--- a/extensions/entitystore-jdbm/build.gradle
+++ b/extensions/entitystore-jdbm/build.gradle
@@ -25,15 +25,16 @@ description = "Apache Polygene\u2122 JDBM EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - JDBM" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile polygene.library( 'fileconfig' )
-  compile libraries.jdbm
+  api polygene.core.bootstrap
+  api polygene.library( 'fileconfig' )
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation libraries.jdbm
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-leveldb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-leveldb/build.gradle b/extensions/entitystore-leveldb/build.gradle
index 1da5d20..4fa7608 100644
--- a/extensions/entitystore-leveldb/build.gradle
+++ b/extensions/entitystore-leveldb/build.gradle
@@ -25,17 +25,18 @@ description = "Apache Polygene\u2122 LevelDB EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - LevelDB" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile polygene.library( 'fileconfig' )
-  compile libraries.leveldb_api
+  api polygene.core.bootstrap
+  api polygene.library( 'fileconfig' )
 
-  runtime polygene.core.runtime
-  runtime libraries.leveldb_java
-  runtime libraries.leveldb_jni_all
+  implementation polygene.library( 'locking' )
+  implementation libraries.leveldb_api
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
+  runtimeOnly libraries.leveldb_java
+  runtimeOnly libraries.leveldb_jni_all
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-memory/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-memory/build.gradle b/extensions/entitystore-memory/build.gradle
index 72b45e6..0f3e713 100644
--- a/extensions/entitystore-memory/build.gradle
+++ b/extensions/entitystore-memory/build.gradle
@@ -23,12 +23,12 @@ apply plugin: 'polygene-extension'
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Memory" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
 
-  testRuntime libraries.logback
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-mongodb/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/build.gradle b/extensions/entitystore-mongodb/build.gradle
index 425485d..12d23c4 100644
--- a/extensions/entitystore-mongodb/build.gradle
+++ b/extensions/entitystore-mongodb/build.gradle
@@ -25,15 +25,16 @@ description = "Apache Polygene\u2122 MongoDB EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - MongoDB" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile libraries.mongodb
+  api polygene.core.bootstrap
+  api libraries.mongodb
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
-  testCompile libraries.embed_mongo
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+  testImplementation libraries.embed_mongo
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-preferences/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/build.gradle b/extensions/entitystore-preferences/build.gradle
index f1e418f..2c8bbff 100644
--- a/extensions/entitystore-preferences/build.gradle
+++ b/extensions/entitystore-preferences/build.gradle
@@ -25,14 +25,14 @@ description = "Apache Polygene\u2122 Preferences EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Preferences" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.slf4j_api
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-redis/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/build.gradle b/extensions/entitystore-redis/build.gradle
index 2bd25af..afe5978 100644
--- a/extensions/entitystore-redis/build.gradle
+++ b/extensions/entitystore-redis/build.gradle
@@ -25,15 +25,15 @@ description = "Apache Polygene\u2122 Redis EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Redis" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile libraries.jedis
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation libraries.jedis
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-riak/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/build.gradle b/extensions/entitystore-riak/build.gradle
index 37672cd..0fa0787 100644
--- a/extensions/entitystore-riak/build.gradle
+++ b/extensions/entitystore-riak/build.gradle
@@ -25,16 +25,16 @@ description = "Apache Polygene\u2122 Riak EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - Riak" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'locking' )
-  compile polygene.library( 'constraints' )
-  compile libraries.riak
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'locking' )
+  implementation polygene.library( 'constraints' )
+  implementation libraries.riak
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/entitystore-sql/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/build.gradle b/extensions/entitystore-sql/build.gradle
index c0c5c8d..ee99f52 100644
--- a/extensions/entitystore-sql/build.gradle
+++ b/extensions/entitystore-sql/build.gradle
@@ -25,23 +25,24 @@ description = "Apache Polygene\u2122 SQL EntityStore Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - EntityStore - SQL" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'sql' )
-  compile libraries.javaSqlGenerator
-  compile( libraries.javaSqlGeneratorImpl ) {
+  api polygene.core.bootstrap
+  api polygene.library( 'sql' )
+
+  implementation libraries.javaSqlGenerator
+  implementation( libraries.javaSqlGeneratorImpl ) {
     exclude group: 'junit'
   }
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.library( 'sql-dbcp' )
-  testCompile polygene.extension( 'valueserialization-orgjson' )
-  testCompile libraries.derby // Needed at compile time for polite test shutdown
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.library( 'sql-dbcp' )
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+  testImplementation libraries.derby // Needed at compile time for polite test shutdown
 
-  testRuntime libraries.logback
-  testRuntime libraries.h2
-  testRuntime libraries.mysql_connector
-  testRuntime libraries.postgres
-  testRuntime libraries.sqlite
+  testRuntimeOnly libraries.logback
+  testRuntimeOnly libraries.h2
+  testRuntimeOnly libraries.mysql_connector
+  testRuntimeOnly libraries.postgres
+  testRuntimeOnly libraries.sqlite
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/indexing-elasticsearch/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/build.gradle b/extensions/indexing-elasticsearch/build.gradle
index 580e673..fac6eec 100644
--- a/extensions/indexing-elasticsearch/build.gradle
+++ b/extensions/indexing-elasticsearch/build.gradle
@@ -25,14 +25,15 @@ description = "Apache Polygene\u2122 ElasticSearch Index/Query Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Index/Query - ElasticSearch" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'fileconfig' )
-  compile libraries.elasticsearch
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'fileconfig' )
+  implementation libraries.elasticsearch
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/indexing-rdf/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/indexing-rdf/build.gradle b/extensions/indexing-rdf/build.gradle
index e8295ed..2eb52e9 100644
--- a/extensions/indexing-rdf/build.gradle
+++ b/extensions/indexing-rdf/build.gradle
@@ -25,17 +25,17 @@ description = "Apache Polygene\u2122 RDF Index/Query Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Index/Query - RDF" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'rdf' )
-  compile libraries.sesame
-  compile libraries.commons_lang
+  api polygene.core.bootstrap
+  api polygene.library( 'rdf' )
 
-  runtime polygene.core.runtime
+  implementation libraries.commons_lang
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
-  testCompile polygene.extension( 'entitystore-preferences' )
-  testCompile polygene.extension( 'entitystore-jdbm' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+  testImplementation polygene.extension( 'entitystore-preferences' )
+  testImplementation polygene.extension( 'entitystore-jdbm' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/indexing-solr/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/indexing-solr/build.gradle b/extensions/indexing-solr/build.gradle
index 141c23d..608bec3 100644
--- a/extensions/indexing-solr/build.gradle
+++ b/extensions/indexing-solr/build.gradle
@@ -25,15 +25,16 @@ description = "Apache Polygene\u2122 Solr Indexing Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Indexing - Solr" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'fileconfig' )
-  compile polygene.library( 'rdf' )
-  compile libraries.solr
+  api polygene.core.bootstrap
+  api polygene.library( 'fileconfig' )
+  api polygene.library( 'rdf' )
 
-  runtime polygene.core.runtime
+  implementation libraries.solr
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.servlet_api
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
+  testRuntimeOnly libraries.servlet_api
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/indexing-sql/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/indexing-sql/build.gradle b/extensions/indexing-sql/build.gradle
index ec67169..e0e50e8 100644
--- a/extensions/indexing-sql/build.gradle
+++ b/extensions/indexing-sql/build.gradle
@@ -25,23 +25,24 @@ description = "Apache Polygene\u2122 SQL Indexing Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Indexing - SQL" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'sql' )
-  compile polygene.extension( 'reindexer' )
-  compile libraries.javaSqlGenerator
-  compile( libraries.javaSqlGeneratorImpl ) {
+  api polygene.core.bootstrap
+  api polygene.library( 'sql' )
+
+  implementation polygene.extension( 'reindexer' )
+  implementation libraries.javaSqlGenerator
+  implementation( libraries.javaSqlGeneratorImpl ) {
     exclude group: 'junit'
   }
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.internals.testsupport
-  testCompile polygene.library( 'sql-dbcp' )
+  testImplementation polygene.internals.testsupport
+  testImplementation polygene.library( 'sql-dbcp' )
 
-  testRuntime libraries.logback
-  testRuntime libraries.derby
-  testRuntime libraries.h2
-  testRuntime libraries.mysql_connector
-  testRuntime libraries.postgres
-  testRuntime libraries.sqlite
+  testRuntimeOnly libraries.logback
+  testRuntimeOnly libraries.derby
+  testRuntimeOnly libraries.h2
+  testRuntimeOnly libraries.mysql_connector
+  testRuntimeOnly libraries.postgres
+  testRuntimeOnly libraries.sqlite
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/metrics-codahale/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/metrics-codahale/build.gradle b/extensions/metrics-codahale/build.gradle
index 800aa19..2805c35 100644
--- a/extensions/metrics-codahale/build.gradle
+++ b/extensions/metrics-codahale/build.gradle
@@ -25,14 +25,14 @@ description = "Apache Polygene\u2122 Codahale Metrics Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Metrics - Codahale" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.codahale_metrics
+  api polygene.core.bootstrap
+  api libraries.codahale_metrics
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'jmx' )
-  testCompile polygene.library( 'metrics' )
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'jmx' )
+  testImplementation polygene.library( 'metrics' )
 
-  testRuntime libraries.logback
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/migration/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/migration/build.gradle b/extensions/migration/build.gradle
index bcb3099..15f9cfb 100644
--- a/extensions/migration/build.gradle
+++ b/extensions/migration/build.gradle
@@ -25,12 +25,13 @@ description = "Apache Polygene\u2122 Migration Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - Migration" }}
 
 dependencies {
-  compile polygene.core.spi
-  compile libraries.slf4j_api
+  api polygene.core.spi
 
-  runtime polygene.core.runtime
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/reindexer/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/reindexer/build.gradle b/extensions/reindexer/build.gradle
index 510cd60..f956f60 100644
--- a/extensions/reindexer/build.gradle
+++ b/extensions/reindexer/build.gradle
@@ -23,14 +23,15 @@ apply plugin: 'polygene-extension'
 jar { manifest { description = "Apache Polygene\u2122 Reindexer Extension" } }
 
 dependencies {
-  compile polygene.core.spi
-  compile libraries.slf4j_api
+  api polygene.core.spi
 
-  runtime polygene.core.runtime
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'entitystore-jdbm' )
-  testCompile polygene.extension( 'indexing-rdf' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'entitystore-jdbm' )
+  testImplementation polygene.extension( 'indexing-rdf' )
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/valueserialization-jackson/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-jackson/build.gradle b/extensions/valueserialization-jackson/build.gradle
index 17ac4b5..fa23ac3 100644
--- a/extensions/valueserialization-jackson/build.gradle
+++ b/extensions/valueserialization-jackson/build.gradle
@@ -25,13 +25,13 @@ description = "Apache Polygene\u2122 Jackson ValueSerialization Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - ValueSerialization - Jackson" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.jackson_mapper
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.jackson_mapper
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/valueserialization-orgjson/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-orgjson/build.gradle b/extensions/valueserialization-orgjson/build.gradle
index 5a2d61e..5431ec5 100644
--- a/extensions/valueserialization-orgjson/build.gradle
+++ b/extensions/valueserialization-orgjson/build.gradle
@@ -25,12 +25,11 @@ description = "Apache Polygene\u2122 org.json ValueSerialization Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - ValueSerialization - org.json" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
+  testRuntimeOnly libraries.logback
 }
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/extensions/valueserialization-stax/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-stax/build.gradle b/extensions/valueserialization-stax/build.gradle
index f60e6be..83e6175 100644
--- a/extensions/valueserialization-stax/build.gradle
+++ b/extensions/valueserialization-stax/build.gradle
@@ -25,13 +25,13 @@ description = "Apache Polygene\u2122 StaX ValueSerialization Extension"
 jar { manifest { name = "Apache Polygene\u2122 Extension - ValueSerialization - StaX" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.commons_lang
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.commons_lang
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
 
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/internals/testsupport-internal/build.gradle
----------------------------------------------------------------------
diff --git a/internals/testsupport-internal/build.gradle b/internals/testsupport-internal/build.gradle
index f946b94..d65e648 100644
--- a/internals/testsupport-internal/build.gradle
+++ b/internals/testsupport-internal/build.gradle
@@ -20,8 +20,8 @@ apply plugin: 'polygene-internal'
 apply plugin: 'polygene-internal-docker'
 
 dependencies {
-  compile polygene.core.testsupport
-  compile libraries.docker_junit
+  api polygene.core.testsupport
+  api libraries.docker_junit
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/alarm/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/alarm/build.gradle b/libraries/alarm/build.gradle
index e9fa455..fcd7f53 100644
--- a/libraries/alarm/build.gradle
+++ b/libraries/alarm/build.gradle
@@ -25,11 +25,11 @@ description = "Apache Polygene\u2122 Alarm Library provides industrial automation s
 jar { manifest { name = "Apache Polygene\u2122 Library - Alarm - APi" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/circuitbreaker/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/circuitbreaker/build.gradle b/libraries/circuitbreaker/build.gradle
index 6720e0c..f9973c4 100644
--- a/libraries/circuitbreaker/build.gradle
+++ b/libraries/circuitbreaker/build.gradle
@@ -26,15 +26,17 @@ description = "Apache Polygene\u2122 Circuit Breaker Library provides a framework f
 jar { manifest { name = "Apache Polygene\u2122 Library - Circuit Breaker" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'jmx' )
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'jmx' )
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.awaitility
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.awaitility
+
+  testRuntimeOnly libraries.logback
 }
 
 task( runCircuitBreakerSample, dependsOn: 'testClasses', type: JavaExec ) {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/constraints/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/constraints/build.gradle b/libraries/constraints/build.gradle
index 6e11bb1..5181d76 100644
--- a/libraries/constraints/build.gradle
+++ b/libraries/constraints/build.gradle
@@ -25,11 +25,11 @@ description = "Apache Polygene\u2122 Constraint Library provides common set of cons
 jar { manifest { name = "Apache Polygene\u2122 Library - Constraints"}}
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/fileconfig/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/fileconfig/build.gradle b/libraries/fileconfig/build.gradle
index 2547cc0..1e42d35 100644
--- a/libraries/fileconfig/build.gradle
+++ b/libraries/fileconfig/build.gradle
@@ -25,12 +25,13 @@ description = "Apache Polygene\u2122 File Configuration Library provides platform s
 jar { manifest { name = "Apache Polygene\u2122 Library - FileConfig" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.slf4j_api
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/http/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/http/build.gradle b/libraries/http/build.gradle
index d665eb3..19c89dc 100644
--- a/libraries/http/build.gradle
+++ b/libraries/http/build.gradle
@@ -25,19 +25,21 @@ description = "Apache Polygene\u2122 Http Library provides embedded Jetty for Apach
 jar { manifest { name = "Apache Polygene\u2122 Library - Http" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'jmx' )
-  compile polygene.library( 'constraints' )
-  compile libraries.bouncy_castle
-  compile libraries.jetty_webapp
-  compile libraries.jetty_jmx
+  api polygene.core.bootstrap
+  api libraries.servlet_api
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'jmx' )
+  implementation polygene.library( 'constraints' )
+  implementation libraries.bouncy_castle
+  implementation libraries.jetty_webapp
+  implementation libraries.jetty_jmx
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.http_client
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }
 
 // Do not run vhost tests on Java >= 9 because they use internal JDK apis
@@ -56,11 +58,11 @@ if( JavaVersion.current() < JavaVersion.VERSION_1_9 )
     }
   }
   configurations {
-    vhostTestCompile.extendsFrom testCompile
-    vhostTestRuntime.extendsFrom testRuntime
+    vhostTestImplementation.extendsFrom testImplementation
+    vhostTestRuntimeOnly.extendsFrom testRuntimeOnly
   }
   dependencies {
-    vhostTestCompile( libraries.dnsjava )
+    vhostTestImplementation libraries.dnsjava
   }
   task vhostTest( type: Test ) {
     // TODO Test JVM won't start when offline

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/invocation-cache/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/invocation-cache/build.gradle b/libraries/invocation-cache/build.gradle
index 5dcbb2e..96c6f77 100644
--- a/libraries/invocation-cache/build.gradle
+++ b/libraries/invocation-cache/build.gradle
@@ -25,12 +25,13 @@ description = "Apache Polygene\u2122 Invocation Cache Library provides caching fram
 jar { manifest { name = "Apache Polygene\u2122 Library - Invocation Cache" } }
 
 dependencies {
-  compile polygene.core.api
-  compile polygene.library( 'jmx' )
+  api polygene.core.api
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'jmx' )
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/jmx/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/jmx/build.gradle b/libraries/jmx/build.gradle
index c0bbd80..4dd6894 100644
--- a/libraries/jmx/build.gradle
+++ b/libraries/jmx/build.gradle
@@ -26,14 +26,15 @@ description = "Apache Polygene\u2122 JMX Library provides Java Management Extension
 jar { manifest { name = "Apache Polygene\u2122 Library - JMX" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.slf4j_api
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
 }
 
 task( runJmxSample, dependsOn: 'testClasses', type: JavaExec ) {
@@ -42,4 +43,3 @@ task( runJmxSample, dependsOn: 'testClasses', type: JavaExec ) {
   main = 'org.apache.polygene.library.jmx.JMXTest'
   classpath = sourceSets.test.runtimeClasspath
 }
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/lang-groovy/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/build.gradle b/libraries/lang-groovy/build.gradle
index 8634868..cf84bd3 100644
--- a/libraries/lang-groovy/build.gradle
+++ b/libraries/lang-groovy/build.gradle
@@ -27,12 +27,13 @@ jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - Groovy" } }
 apply plugin: 'groovy'
 
 dependencies {
-  compile polygene.core.api
-  compile libraries.groovy
+  api polygene.core.api
 
-  runtime polygene.core.runtime
+  implementation libraries.groovy
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/lang-javascript/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/build.gradle b/libraries/lang-javascript/build.gradle
index 1d301e3..3f8806c 100644
--- a/libraries/lang-javascript/build.gradle
+++ b/libraries/lang-javascript/build.gradle
@@ -26,13 +26,14 @@ jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - JavaScript" }
 
 
 dependencies {
-  compile polygene.core.api
-  compile polygene.library( 'scripting' )
-  compile libraries.javascript
+  api polygene.core.api
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'scripting' )
+  implementation libraries.javascript
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/locking/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/locking/build.gradle b/libraries/locking/build.gradle
index 3dfad3f..c9eb189 100644
--- a/libraries/locking/build.gradle
+++ b/libraries/locking/build.gradle
@@ -25,11 +25,11 @@ description = "Apache Polygene\u2122 Locking Library provides lock management for m
 jar { manifest { name = "Apache Polygene\u2122 Library - Locking" } }
 
 dependencies {
-  compile polygene.core.api
+  api polygene.core.api
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/logging/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/logging/build.gradle b/libraries/logging/build.gradle
index f45c676..18d1a67 100644
--- a/libraries/logging/build.gradle
+++ b/libraries/logging/build.gradle
@@ -25,11 +25,12 @@ description = "Apache Polygene\u2122 Logging Library provides an advanced logging f
 jar { manifest { name = "Apache Polygene\u2122 Library - Logging" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'constraints' )
+  api polygene.core.bootstrap
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'indexing-rdf' )
+  implementation polygene.library( 'constraints' )
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'indexing-rdf' )
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/metrics/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/metrics/build.gradle b/libraries/metrics/build.gradle
index 606b655..5c52590 100644
--- a/libraries/metrics/build.gradle
+++ b/libraries/metrics/build.gradle
@@ -25,12 +25,12 @@ description = "Apache Polygene\u2122 Metrics Library."
 jar { manifest { name = "Apache Polygene\u2122 Library - Metrics" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'metrics-codahale' )
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'metrics-codahale' )
 
-  testRuntime libraries.logback
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/osgi/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/osgi/build.gradle b/libraries/osgi/build.gradle
index c762482..0fc6eb5 100644
--- a/libraries/osgi/build.gradle
+++ b/libraries/osgi/build.gradle
@@ -25,14 +25,14 @@ description = "Apache Polygene\u2122 OSGi Library provides integration of OSGi and
 jar { manifest { name = "Apache Polygene\u2122 Library - OSGi Integration" } }
 
 dependencies {
-  compile polygene.core.api
-  compile libraries.osgi_core
-  compile libraries.osgi_compendium
+  api polygene.core.api
+  api libraries.osgi_core
+  api libraries.osgi_compendium
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.mockito
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.mockito
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/rdf/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/rdf/build.gradle b/libraries/rdf/build.gradle
index 627d454..c3f175c 100644
--- a/libraries/rdf/build.gradle
+++ b/libraries/rdf/build.gradle
@@ -25,15 +25,16 @@ description = "Apache Polygene\u2122 RDF Library provides commonalities of various
 jar { manifest { name = "Apache Polygene\u2122 Library - RDF" } }
 
 dependencies {
-  compile polygene.core.spi
-  compile polygene.library( 'constraints' )
-  compile polygene.library( 'fileconfig' )
-  compile libraries.sesame
+  api polygene.core.spi
+  api libraries.sesame
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'constraints' )
+  implementation polygene.library( 'fileconfig' )
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/rest-client/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/rest-client/build.gradle b/libraries/rest-client/build.gradle
index 33cb81f..da6455c 100644
--- a/libraries/rest-client/build.gradle
+++ b/libraries/rest-client/build.gradle
@@ -25,13 +25,15 @@ description = "Apache Polygene\u2122 REST Client Library provides a client library
 jar { manifest { name = "Apache Polygene\u2122 Library - REST Client" } }
 
 dependencies {
-  compile polygene.library( 'rest-common' )
+  api polygene.library( 'rest-common' )
 
-  runtime polygene.core.runtime
+  implementation libraries.restlet
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'rest-server' )
-  testCompile polygene.extension( 'valueserialization-orgjson' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'rest-server' )
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/rest-common/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/rest-common/build.gradle b/libraries/rest-common/build.gradle
index 7b8f0d8..6f1d281 100644
--- a/libraries/rest-common/build.gradle
+++ b/libraries/rest-common/build.gradle
@@ -25,8 +25,10 @@ description = "Apache Polygene\u2122 REST Library provides various Restlet resource
 jar { manifest { name = "Apache Polygene\u2122 Library - REST" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.restlet
-  compile libraries.velocity
-  compile libraries.servlet_api
+  compileOnly libraries.servlet_api
+
+  api polygene.core.bootstrap
+
+  implementation libraries.restlet
+  implementation libraries.velocity
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/rest-server/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/rest-server/build.gradle b/libraries/rest-server/build.gradle
index 9a2a472..49732c3 100644
--- a/libraries/rest-server/build.gradle
+++ b/libraries/rest-server/build.gradle
@@ -25,16 +25,18 @@ description = "Apache Polygene\u2122 REST Server Library provides a server componen
 jar { manifest { name = "Apache Polygene\u2122 Library - REST server" } }
 
 dependencies {
-  compile polygene.library( 'rest-common' )
-  compile libraries.servlet_api
-  compile libraries.slf4j_api
-  compile libraries.velocity
-  compile libraries.restlet
-  compile libraries.freemarker
+  compileOnly libraries.servlet_api
 
-  runtime polygene.core.runtime
+  api polygene.library( 'rest-common' )
+  api libraries.restlet
 
-  testCompile polygene.core.testsupport
+  implementation libraries.slf4j_api
+  implementation libraries.velocity
+  implementation libraries.freemarker
 
-  testRuntime libraries.logback
+  runtimeOnly polygene.core.runtime
+
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/rest/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/rest/build.gradle b/libraries/rest/build.gradle
index 27d8532..8383383 100644
--- a/libraries/rest/build.gradle
+++ b/libraries/rest/build.gradle
@@ -25,18 +25,19 @@ description = "Apache Polygene\u2122 REST Library provides various Restlet resource
 jar { manifest { name = "Apache Polygene\u2122 Library - REST" } }
 
 dependencies {
-  compile polygene.extension( 'indexing-rdf' )
-  compile libraries.restlet
-  compile libraries.sparql
-  compile libraries.velocity
-  compile libraries.servlet_api
+  compileOnly libraries.servlet_api
 
-  runtime polygene.core.runtime
+  implementation polygene.extension( 'indexing-rdf' )
+  implementation libraries.restlet
+  implementation libraries.sparql
+  implementation libraries.velocity
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'http' )
-  testCompile polygene.extension( 'valueserialization-orgjson' )
-  testCompile libraries.http_client
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'http' )
+  testImplementation polygene.extension( 'valueserialization-orgjson' )
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/restlet/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/restlet/build.gradle b/libraries/restlet/build.gradle
index 35cd1d9..ed8ca1a 100644
--- a/libraries/restlet/build.gradle
+++ b/libraries/restlet/build.gradle
@@ -26,21 +26,22 @@ description = "Apache Polygene\u2122 Restlet Library provides automatic CRUD resour
 jar { manifest { name = "Apache Polygene\u2122 Library - Restlet" } }
 
 dependencies {
+  compileOnly libraries.servlet_api
 
-  compile polygene.core.bootstrap
-  compile polygene.extension( 'valueserialization-jackson' )
-  compile polygene.extension( 'indexing-rdf' )
-  compile polygene.extension( 'entitystore-file' )
-  compile libraries.restlet
-  compile libraries.servlet_api
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.extension( 'valueserialization-jackson' )
+  implementation polygene.extension( 'indexing-rdf' )
+  implementation polygene.extension( 'entitystore-file' )
+  implementation libraries.restlet
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'http' )
-  testCompile libraries.http_client
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'http' )
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }
 
 task runRestletSample( type: JavaExec, dependsOn: 'testClasses' ) {
@@ -49,4 +50,3 @@ task runRestletSample( type: JavaExec, dependsOn: 'testClasses' ) {
   classpath = sourceSets.test.runtimeClasspath
   main = 'org.apache.polygene.library.restlet.TestApplication'
 }
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/scripting/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/scripting/build.gradle b/libraries/scripting/build.gradle
index e1a1794..c5b3df8 100644
--- a/libraries/scripting/build.gradle
+++ b/libraries/scripting/build.gradle
@@ -25,9 +25,9 @@ description = "Apache Polygene\u2122 Common Scripting Library contains common class
 jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - Common" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-}
\ No newline at end of file
+  testImplementation polygene.core.testsupport
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/servlet/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/servlet/build.gradle b/libraries/servlet/build.gradle
index 62a026e..2a128bf 100644
--- a/libraries/servlet/build.gradle
+++ b/libraries/servlet/build.gradle
@@ -25,15 +25,17 @@ description = "Apache Polygene\u2122 Servlet Library provides integration of Apache
 jar { manifest { name = "Apache Polygene\u2122 Library - Servlet" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.servlet_api
-  compile libraries.slf4j_api
+  compileOnly libraries.servlet_api
 
-  runtime polygene.core.runtime
+  api polygene.core.bootstrap
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.jetty_webapp
-  testCompile libraries.http_client
+  implementation libraries.slf4j_api
 
-  testRuntime libraries.logback
+  runtimeOnly polygene.core.runtime
+
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.jetty_webapp
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/shiro-core/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/shiro-core/build.gradle b/libraries/shiro-core/build.gradle
index e554474..6bbf3ac 100644
--- a/libraries/shiro-core/build.gradle
+++ b/libraries/shiro-core/build.gradle
@@ -25,18 +25,19 @@ description = "Apache Polygene\u2122 Shiro Library integrates Apache Shiro security
 jar { manifest { name = "Apache Polygene\u2122 Library - Shiro Core" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.shiro
-  compile libraries.bouncy_castle
+  api polygene.core.bootstrap
+  api libraries.shiro
 
-  runtime polygene.core.runtime
+  implementation libraries.bouncy_castle
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'shiro-web' )
-  testCompile polygene.library( 'servlet' )
-  testCompile polygene.extension( 'indexing-rdf' )
-  testCompile libraries.jetty_webapp
-  testCompile libraries.http_client
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'shiro-web' )
+  testImplementation polygene.library( 'servlet' )
+  testImplementation polygene.extension( 'indexing-rdf' )
+  testImplementation libraries.jetty_webapp
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/shiro-web/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/shiro-web/build.gradle b/libraries/shiro-web/build.gradle
index 3bcf9c6..79cea7e 100644
--- a/libraries/shiro-web/build.gradle
+++ b/libraries/shiro-web/build.gradle
@@ -26,21 +26,23 @@ jar { manifest { name = "Apache Polygene\u2122 Library - Shiro Web" } }
 
 dependencies {
 
-  compile polygene.core.bootstrap
-  compile polygene.library( 'shiro-core' )
-  compile polygene.library( 'servlet' )
-  compile polygene.library( 'http' )
-  compile libraries.shiro_web
-  compile libraries.servlet_api
-  compile libraries.slf4j_api
-
-  runtime polygene.core.runtime
-
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'shiro-web' )
-  testCompile polygene.extension( 'indexing-rdf' )
-  testCompile libraries.jetty_webapp
-  testCompile libraries.http_client
-
-  testRuntime libraries.logback
+  compileOnly libraries.servlet_api
+
+  api polygene.core.bootstrap
+  api polygene.library( 'shiro-core' )
+  api polygene.library( 'servlet' )
+  api polygene.library( 'http' )
+
+  implementation libraries.shiro_web
+  implementation libraries.slf4j_api
+
+  runtimeOnly polygene.core.runtime
+
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'shiro-web' )
+  testImplementation polygene.extension( 'indexing-rdf' )
+  testImplementation libraries.jetty_webapp
+  testImplementation libraries.http_client
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/spring/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/spring/build.gradle b/libraries/spring/build.gradle
index 9d70d05..26a9dde 100644
--- a/libraries/spring/build.gradle
+++ b/libraries/spring/build.gradle
@@ -25,13 +25,13 @@ description = "Apache Polygene\u2122 Spring Library allows for tight integration of
 jar { manifest { name = "Apache Polygene\u2122 Library - Spring" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.spring_core
+  api polygene.core.bootstrap
+  api libraries.spring_core
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.spring_testsupport
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.spring_testsupport
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/sql-bonecp/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/sql-bonecp/build.gradle b/libraries/sql-bonecp/build.gradle
index 013b74f..ff7b098 100644
--- a/libraries/sql-bonecp/build.gradle
+++ b/libraries/sql-bonecp/build.gradle
@@ -25,7 +25,7 @@ description = "Apache Polygene\u2122 SQL BoneCP Library provides BoneCP support."
 jar { manifest { name = "Apache Polygene\u2122 Library - SQL BoneCP" } }
 
 dependencies {
-  compile polygene.library( 'sql' )
-  compile libraries.bonecp
-}
+  api polygene.library( 'sql' )
 
+  implementation libraries.bonecp
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/sql-dbcp/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/sql-dbcp/build.gradle b/libraries/sql-dbcp/build.gradle
index 2ac3f7d..0e804ea 100644
--- a/libraries/sql-dbcp/build.gradle
+++ b/libraries/sql-dbcp/build.gradle
@@ -25,7 +25,7 @@ description = "Apache Polygene\u2122 SQL DBCP Library provides DBCP support."
 jar { manifest { name = "Apache Polygene\u2122 Library - SQL DBCP" } }
 
 dependencies {
-  compile polygene.library( 'sql' )
-  compile libraries.commons_dbcp
-}
+  api polygene.library( 'sql' )
 
+  implementation libraries.commons_dbcp
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/sql-liquibase/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/sql-liquibase/build.gradle b/libraries/sql-liquibase/build.gradle
index 319cad1..ffedb52 100644
--- a/libraries/sql-liquibase/build.gradle
+++ b/libraries/sql-liquibase/build.gradle
@@ -25,16 +25,16 @@ description = "Apache Polygene\u2122 SQL Liquibase Library provides Liquibase suppo
 jar { manifest { name = "Apache Polygene\u2122 Library - SQL Liquibase" } }
 
 dependencies {
-  compile polygene.library( 'sql' )
-  compile libraries.liquibase
-  compile libraries.slf4j_api
+  api polygene.library( 'sql' )
 
-  runtime polygene.core.runtime
+  implementation libraries.liquibase
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'sql-dbcp' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.derby
-  testRuntime libraries.logback
-}
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'sql-dbcp' )
 
+  testRuntimeOnly libraries.derby
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/sql/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/sql/build.gradle b/libraries/sql/build.gradle
index 57aa378..adb28f6 100644
--- a/libraries/sql/build.gradle
+++ b/libraries/sql/build.gradle
@@ -25,20 +25,23 @@ description = "Apache Polygene\u2122 SQL Library provides SQL support."
 jar { manifest { name = "Apache Polygene\u2122 Library - SQL" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'circuitbreaker' )
-  compile polygene.library( 'jmx' )
-
-  runtime polygene.core.runtime
-
-  testCompile polygene.core.testsupport
-  testCompile polygene.library( 'sql-bonecp' )
-  testCompile polygene.library( 'sql-dbcp' )
-  testCompile polygene.library( 'sql-liquibase' )
-  testCompile polygene.extension( 'entitystore-preferences' )
-
-  testRuntime libraries.logback
-  testRuntime libraries.derby
-  testRuntime libraries.mysql_connector
-  testRuntime libraries.postgres
+  api polygene.core.bootstrap
+  api polygene.library( 'circuitbreaker' )
+
+  implementation polygene.library( 'jmx' )
+  implementation libraries.slf4j_api
+
+  runtimeOnly polygene.core.runtime
+
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.library( 'sql-bonecp' )
+  testImplementation polygene.library( 'sql-dbcp' )
+  testImplementation polygene.library( 'sql-liquibase' )
+  testImplementation polygene.extension( 'entitystore-preferences' )
+  testImplementation libraries.commons_dbcp
+
+  testRuntimeOnly libraries.logback
+  testRuntimeOnly libraries.derby
+  testRuntimeOnly libraries.mysql_connector
+  testRuntimeOnly libraries.postgres
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/uid/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/uid/build.gradle b/libraries/uid/build.gradle
index 5ff2621..2ccabfd 100644
--- a/libraries/uid/build.gradle
+++ b/libraries/uid/build.gradle
@@ -25,11 +25,11 @@ description = "Apache Polygene\u2122 UID Library contains various Identity generati
 jar { manifest { name = "Apache Polygene\u2122 Library - UID" } }
 
 dependencies {
-  compile polygene.core.bootstrap
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/libraries/uowfile/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/uowfile/build.gradle b/libraries/uowfile/build.gradle
index 7e29df3..75dbb9e 100644
--- a/libraries/uowfile/build.gradle
+++ b/libraries/uowfile/build.gradle
@@ -25,12 +25,14 @@ description = "Apache Polygene\u2122 UoWFile Library provides file operations bindi
 jar { manifest { name = "Apache Polygene\u2122 Library - UoWFile" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'fileconfig' )
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.library( 'fileconfig' )
+  implementation libraries.slf4j_api
 
-  testCompile polygene.core.testsupport
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/manual/build.gradle
----------------------------------------------------------------------
diff --git a/manual/build.gradle b/manual/build.gradle
index e76f7cf..2511096 100644
--- a/manual/build.gradle
+++ b/manual/build.gradle
@@ -21,11 +21,10 @@ apply plugin: 'polygene-manual'
 description = "Apache Polygene\u2122 Manuals and Website."
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'constraints' )
-  compile polygene.library( 'logging' )
+  implementation polygene.core.bootstrap
+  implementation polygene.library( 'constraints' )
+  implementation polygene.library( 'logging' )
 
-  runtime polygene.core.runtime
-  runtime libraries.logback
+  runtimeOnly polygene.core.runtime
+  runtimeOnly libraries.logback
 }
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/samples/dci/build.gradle
----------------------------------------------------------------------
diff --git a/samples/dci/build.gradle b/samples/dci/build.gradle
index 6226cc6..5210a58 100644
--- a/samples/dci/build.gradle
+++ b/samples/dci/build.gradle
@@ -25,12 +25,12 @@ description = "Sample of how DCI (Data, Context & Interaction) pattern is implem
 jar { manifest { name = "Apache Polygene\u2122 Sample - DCI" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.core.runtime  /* TODO: Get rid of this dependency */
-  compile polygene.library( 'constraints' )
+  implementation polygene.core.bootstrap
+  implementation polygene.core.runtime  /* TODO: Get rid of this dependency */
+  implementation polygene.library( 'constraints' )
 
-  testCompile polygene.core.testsupport
-  testCompile libraries.easymock
+  testImplementation polygene.core.testsupport
+  testImplementation libraries.easymock
 
-  testRuntime libraries.logback
-}
\ No newline at end of file
+  testRuntimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/samples/forum/build.gradle
----------------------------------------------------------------------
diff --git a/samples/forum/build.gradle b/samples/forum/build.gradle
index 7986214..be78ca2 100644
--- a/samples/forum/build.gradle
+++ b/samples/forum/build.gradle
@@ -26,20 +26,20 @@ description = "Sample of how to build a web forum"
 jar { manifest { name = "Apache Polygene\u2122 Sample - Forum" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.library( 'rest-server' )
-  compile polygene.library( 'fileconfig' )
-  compile polygene.extension( 'valueserialization-orgjson' )
-  compile polygene.extension( 'entitystore-memory' )
-  compile polygene.extension( 'entitystore-file' )
-  compile polygene.extension( 'indexing-rdf' )
-  compile libraries.servlet_api
+  implementation polygene.core.bootstrap
+  implementation polygene.library( 'rest-server' )
+  implementation polygene.library( 'fileconfig' )
+  implementation polygene.extension( 'valueserialization-orgjson' )
+  implementation polygene.extension( 'entitystore-memory' )
+  implementation polygene.extension( 'entitystore-file' )
+  implementation polygene.extension( 'indexing-rdf' )
+  implementation libraries.servlet_api
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 
-  testCompile polygene.core.testsupport
+  testImplementation polygene.core.testsupport
 
-  testRuntime libraries.logback
+  testRuntimeOnly libraries.logback
 }
 
 task( runForumSample, dependsOn: 'testClasses', type: JavaExec ) {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/samples/rental/build.gradle
----------------------------------------------------------------------
diff --git a/samples/rental/build.gradle b/samples/rental/build.gradle
index fca63d8..1f083e4 100644
--- a/samples/rental/build.gradle
+++ b/samples/rental/build.gradle
@@ -32,10 +32,10 @@ description = "Sample of implementation of a Car Rental application."
 jar { manifest { name = "Apache Polygene\u2122 Sample - Car Rental" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.extension( 'valueserialization-orgjson' )
+  implementation polygene.core.bootstrap
+  implementation polygene.extension( 'valueserialization-orgjson' )
 
   providedCompile libraries.servlet_api
 
-  runtime polygene.core.runtime
+  runtimeOnly polygene.core.runtime
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/samples/sql-support/build.gradle
----------------------------------------------------------------------
diff --git a/samples/sql-support/build.gradle b/samples/sql-support/build.gradle
index e0c3f21..1be908e 100644
--- a/samples/sql-support/build.gradle
+++ b/samples/sql-support/build.gradle
@@ -27,15 +27,15 @@ jar { manifest { name = "Apache Polygene\u2122 Sample - SQL Support" } }
 
 dependencies {
 
-  compile polygene.core.bootstrap
-  compile polygene.library( 'sql-dbcp' )
-  compile polygene.extension( 'entitystore-preferences' )
-  compile polygene.extension( 'entitystore-sql' )
-  compile polygene.extension( 'indexing-sql' )
+  implementation polygene.core.bootstrap
+  implementation polygene.library( 'sql-dbcp' )
+  implementation polygene.extension( 'entitystore-preferences' )
+  implementation polygene.extension( 'entitystore-sql' )
+  implementation polygene.extension( 'indexing-sql' )
 
-  runtime polygene.core.runtime
-  runtime libraries.postgres
-  runtime libraries.logback
+  runtimeOnly polygene.core.runtime
+  runtimeOnly libraries.postgres
+  runtimeOnly libraries.logback
 }
 
 task( runSqlSupportSample, dependsOn: 'classes', type: JavaExec ) {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/samples/swing/build.gradle
----------------------------------------------------------------------
diff --git a/samples/swing/build.gradle b/samples/swing/build.gradle
index fa69db5..387361f 100644
--- a/samples/swing/build.gradle
+++ b/samples/swing/build.gradle
@@ -26,8 +26,9 @@ description = "Sample of how to use the Swing bindings."
 jar { manifest { name = "Apache Polygene\u2122 Sample - Swing Bindings" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  runtime polygene.core.runtime
+  implementation polygene.core.bootstrap
+
+  runtimeOnly polygene.core.runtime
 }
 
 task( runSwingSample, dependsOn: 'classes', type: JavaExec ) {
@@ -35,4 +36,4 @@ task( runSwingSample, dependsOn: 'classes', type: JavaExec ) {
   description = "Runs $project.name sample."
   main = 'org.apache.polygene.sample.swing.binding.example.Main'
   classpath = sourceSets.main.runtimeClasspath
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/tests/performance/build.gradle
----------------------------------------------------------------------
diff --git a/tests/performance/build.gradle b/tests/performance/build.gradle
index a8613ad..aeb44ec 100644
--- a/tests/performance/build.gradle
+++ b/tests/performance/build.gradle
@@ -26,20 +26,20 @@ jar { manifest { name = "Apache Polygene\u2122 Tests - Performance" } }
 apply plugin: PerformanceTestsPlugin
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile libraries.junit
-  compile libraries.slf4j_api
+  implementation polygene.core.bootstrap
+  implementation libraries.junit
+  implementation libraries.slf4j_api
 
-  perfCompile polygene.core.testsupport
-  perfCompile polygene.library( 'sql-dbcp' )
-  perfCompile polygene.extension( 'valueserialization-orgjson' )
-  perfCompile polygene.extension( 'entitystore-memory' )
-  perfCompile polygene.extension( 'entitystore-jdbm' )
-  perfCompile polygene.extension( 'entitystore-sql' )
-  perfCompile polygene.extension( 'cache-ehcache' )
-  perfCompile polygene.extension( 'indexing-rdf' )
-  perfCompile libraries.derby
+  perfImplementation polygene.core.testsupport
+  perfImplementation polygene.library( 'sql-dbcp' )
+  perfImplementation polygene.extension( 'valueserialization-orgjson' )
+  perfImplementation polygene.extension( 'entitystore-memory' )
+  perfImplementation polygene.extension( 'entitystore-jdbm' )
+  perfImplementation polygene.extension( 'entitystore-sql' )
+  perfImplementation polygene.extension( 'cache-ehcache' )
+  perfImplementation polygene.extension( 'indexing-rdf' )
+  perfImplementation libraries.derby
 
-  perfRuntime polygene.core.runtime
-  perfRuntime libraries.logback
+  perfRuntimeOnly polygene.core.runtime
+  perfRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/tests/regression/build.gradle
----------------------------------------------------------------------
diff --git a/tests/regression/build.gradle b/tests/regression/build.gradle
index 3db1de8..d7d06e5 100644
--- a/tests/regression/build.gradle
+++ b/tests/regression/build.gradle
@@ -25,12 +25,12 @@ description = "Apache Polygene\u2122 Regression Tests are added by community member
 jar { manifest { name = "Apache Polygene\u2122 Tests - Regression" } }
 
 dependencies {
-  compile polygene.core.testsupport
-  compile polygene.library( 'logging' )
-  compile polygene.extension( 'entitystore-jdbm' )
-  compile libraries.slf4j_api
-  compile libraries.junit
+  implementation polygene.core.testsupport
+  implementation polygene.library( 'logging' )
+  implementation polygene.extension( 'entitystore-jdbm' )
+  implementation libraries.slf4j_api
+  implementation libraries.junit
 
-  runtime polygene.core.runtime
-  runtime libraries.logback
-}
\ No newline at end of file
+  runtimeOnly polygene.core.runtime
+  runtimeOnly libraries.logback
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/c8eb9bdf/tools/envisage/build.gradle
----------------------------------------------------------------------
diff --git a/tools/envisage/build.gradle b/tools/envisage/build.gradle
index edfac7a..c73dbb3 100644
--- a/tools/envisage/build.gradle
+++ b/tools/envisage/build.gradle
@@ -26,18 +26,19 @@ description = "Visualizer of a Apache Polygene\u2122 Application Structure."
 jar { manifest { name = "Apache Polygene\u2122 Envisage" } }
 
 dependencies {
-  compile polygene.core.bootstrap
-  compile polygene.tool( 'model-detail' )
-  compile libraries.jgoodies_looks
-  compile libraries.pdfbox
-  compile libraries.prefuse
+  api polygene.core.bootstrap
 
-  runtime polygene.core.runtime
+  implementation polygene.tool( 'model-detail' )
+  implementation libraries.jgoodies_looks
+  implementation libraries.pdfbox
+  implementation libraries.prefuse
 
-  testCompile polygene.core.testsupport
-  testCompile polygene.extension( 'indexing-rdf' )
+  runtimeOnly polygene.core.runtime
 
-  testRuntime libraries.logback
+  testImplementation polygene.core.testsupport
+  testImplementation polygene.extension( 'indexing-rdf' )
+
+  testRuntimeOnly libraries.logback
 }
 
 task( runEnvisageSample, dependsOn: 'testClasses', type: JavaExec ) {