You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ie...@apache.org on 2020/06/29 14:40:30 UTC

[james-project] 12/20: JAMES-3260 Builds up to :':apache-james-mpt:apache-james-mpt-core:compileJava'.

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

ieugen pushed a commit to branch JAMES-3260-gradle-poc
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6789050225531384848f30c5feafd90783657ac0
Author: Eugen Stan <ie...@apache.org>
AuthorDate: Mon Jun 22 16:01:46 2020 +0300

    JAMES-3260 Builds up to :':apache-james-mpt:apache-james-mpt-core:compileJava'.
    
    * Using 'java-libary' plugin more for api dependencies
    * Build time is now 32m+
---
 core/build.gradle                                  |  8 ++++
 event-sourcing/event-sourcing-core/build.gradle    | 21 ++++++++++-
 event-sourcing/event-sourcing-pojo/build.gradle    | 17 +++++++++
 event-sourcing/event-store-api/build.gradle        | 18 ++++++++-
 event-sourcing/event-store-cassandra/build.gradle  | 24 ++++++++++--
 event-sourcing/event-store-memory/build.gradle     | 44 ++++++++++++++++++++--
 mailbox/api/build.gradle                           |  1 +
 mailbox/backup/build.gradle                        |  6 ++-
 mailbox/cassandra/build.gradle                     | 10 ++++-
 mailbox/elasticsearch/build.gradle                 |  3 ++
 mailbox/event/event-cassandra/build.gradle         | 15 +++++++-
 mailbox/event/event-memory/build.gradle            |  5 ++-
 mailbox/event/event-rabbitmq/build.gradle          |  5 ++-
 mailbox/event/json/build.gradle                    |  3 +-
 mailbox/jpa/build.gradle                           |  2 +-
 mailbox/lucene/build.gradle                        | 29 +++++++++++++-
 mailbox/maildir/build.gradle                       | 20 ++++++++++
 mailbox/memory/build.gradle                        |  5 ++-
 .../deleted-messages-vault-cassandra/build.gradle  |  5 ++-
 mailbox/plugin/deleted-messages-vault/build.gradle |  5 ++-
 .../plugin/quota-mailing-cassandra/build.gradle    | 16 ++++++--
 mailbox/plugin/quota-mailing-memory/build.gradle   | 19 ++++++++--
 mailbox/plugin/quota-mailing/build.gradle          | 34 ++++++++++++++++-
 .../plugin/quota-search-elasticsearch/build.gradle | 41 ++++++++++++++++++--
 mailbox/plugin/quota-search-scanning/build.gradle  | 32 ++++++++++++++--
 mailbox/plugin/quota-search/build.gradle           | 29 +++++++++++++-
 mailbox/plugin/spamassassin/build.gradle           | 30 ++++++++++++++-
 mailbox/scanning-search/build.gradle               | 22 ++++++++++-
 mailbox/spring/build.gradle                        | 17 ++++++++-
 mailbox/store/build.gradle                         |  5 ++-
 mailbox/tika/build.gradle                          |  6 ++-
 mailbox/tools/copier/build.gradle                  | 21 ++++++++++-
 mailbox/tools/indexer/build.gradle                 | 35 ++++++++++++++---
 mailbox/tools/jpa-migrator/build.gradle            | 16 ++++++++
 mailbox/tools/quota-recompute/build.gradle         |  4 ++
 server/data/data-api/build.gradle                  | 15 +++++++-
 server/data/data-cassandra/build.gradle            | 21 +++++++++++
 server/data/data-file/build.gradle                 | 19 ++++++++++
 server/data/data-jdbc/build.gradle                 | 19 ++++++++++
 server/data/data-jmap-cassandra/build.gradle       | 19 ++++++++++
 server/data/data-jmap/build.gradle                 | 19 ++++++++++
 server/data/data-jpa/build.gradle                  |  8 ++++
 server/data/data-ldap/build.gradle                 | 22 +++++++++++
 server/data/data-library/build.gradle              | 16 ++++++--
 server/data/data-memory/build.gradle               | 34 ++++++++++++++---
 server/dns-service/dnsservice-api/build.gradle     |  3 ++
 server/dns-service/dnsservice-dnsjava/build.gradle | 16 +++++++-
 server/dns-service/dnsservice-library/build.gradle | 13 +++++++
 server/dns-service/dnsservice-test/build.gradle    | 12 ++++++
 .../mailrepository/mailrepository-api/build.gradle | 21 ++++++++++-
 .../mailrepository-cassandra/build.gradle          | 22 ++++++++++-
 .../mailrepository-memory/build.gradle             | 25 +++++++++++-
 server/task/task-api/build.gradle                  |  9 +++++
 server/task/task-distributed/build.gradle          | 17 ++++++++-
 server/task/task-json/build.gradle                 | 14 ++++++-
 server/task/task-memory/build.gradle               | 25 ++++++++----
 third-party/spamassassin/build.gradle              | 15 ++++++++
 57 files changed, 881 insertions(+), 76 deletions(-)

diff --git a/core/build.gradle b/core/build.gradle
index 1cee37f..52011f0 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -5,6 +5,10 @@ plugins {
     id 'java-library'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation 'com.github.fge:throwing-lambdas:0.5.0'
     implementation 'com.github.steveash.guavate:guavate:1.0.0'
@@ -37,4 +41,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/event-sourcing/event-sourcing-core/build.gradle b/event-sourcing/event-sourcing-core/build.gradle
index 0a4f211..ec94429 100644
--- a/event-sourcing/event-sourcing-core/build.gradle
+++ b/event-sourcing/event-sourcing-core/build.gradle
@@ -6,6 +6,10 @@ plugins {
     id 'scala'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(':event-sourcing:event-sourcing-event-store-api')
     implementation project(':event-sourcing:event-sourcing-pojo')
@@ -16,11 +20,22 @@ dependencies {
     implementation 'org.slf4j:slf4j-api:1.7.27'
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
+    implementation 'org.reactivestreams:reactive-streams:1.0.3'
+
     testImplementation project(':event-sourcing:event-sourcing-pojo')
+    testImplementation project(path: ':event-sourcing:event-sourcing-pojo', configuration: 'tests')
     testImplementation project(':testing-base')
+    testImplementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
 
-    implementation 'org.reactivestreams:reactive-streams:1.0.3'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Event sourcing :: core'
@@ -30,4 +45,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/event-sourcing/event-sourcing-pojo/build.gradle b/event-sourcing/event-sourcing-pojo/build.gradle
index 84379ec..c50f699 100644
--- a/event-sourcing/event-sourcing-pojo/build.gradle
+++ b/event-sourcing/event-sourcing-pojo/build.gradle
@@ -4,15 +4,28 @@
 
 plugins {
     id 'scala'
+    id 'java-library'
+}
+
+configurations {
+    tests
 }
 
 dependencies {
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
+
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
 description = 'Apache James :: Event sourcing :: pojo'
 
 tasks.register('testsJar', Jar) {
@@ -20,4 +33,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/event-sourcing/event-store-api/build.gradle b/event-sourcing/event-store-api/build.gradle
index eb061b3..44b0639 100644
--- a/event-sourcing/event-store-api/build.gradle
+++ b/event-sourcing/event-store-api/build.gradle
@@ -6,6 +6,10 @@ plugins {
     id 'scala'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(':event-sourcing:event-sourcing-pojo')
 
@@ -14,10 +18,18 @@ dependencies {
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
 
-    testImplementation project(':event-sourcing:event-sourcing-pojo')
+    testImplementation project(path: ':event-sourcing:event-sourcing-pojo', configuration: 'tests')
     testImplementation project(':testing-base')
 
     testImplementation 'io.projectreactor:reactor-scala-extensions_2.13:0.5.1'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Event Sourcing :: Event Store :: API'
@@ -27,4 +39,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/event-sourcing/event-store-cassandra/build.gradle b/event-sourcing/event-store-cassandra/build.gradle
index 3f9947f..4a195eb 100644
--- a/event-sourcing/event-store-cassandra/build.gradle
+++ b/event-sourcing/event-store-cassandra/build.gradle
@@ -4,6 +4,11 @@
 
 plugins {
     id 'scala'
+    id 'java-library'
+}
+
+configurations {
+    tests
 }
 
 dependencies {
@@ -25,16 +30,25 @@ dependencies {
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
     implementation 'com.datastax.cassandra:cassandra-driver-core:3.7.2'
 
-    testImplementation project(':james-backends-common:apache-james-backends-cassandra')
-    testImplementation project(':event-sourcing:event-sourcing-core')
+    testImplementation project(path: ':james-backends-common:apache-james-backends-cassandra', configuration: 'tests')
     testImplementation project(':event-sourcing:event-sourcing-event-store-api')
+    testImplementation project(path: ':event-sourcing:event-sourcing-event-store-api', configuration: 'tests')
     testImplementation project(':event-sourcing:event-sourcing-core')
-    testImplementation project(':event-sourcing:event-sourcing-pojo')
+    testImplementation project(path: ':event-sourcing:event-sourcing-core', configuration: 'tests')
+    testImplementation project(path: ':event-sourcing:event-sourcing-pojo', configuration: 'tests')
     testImplementation project(':testing-base')
 
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 // https://stackoverflow.com/questions/23261075/compiling-scala-before-alongside-java-with-gradle
@@ -56,4 +70,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/event-sourcing/event-store-memory/build.gradle b/event-sourcing/event-store-memory/build.gradle
index 5d26ebb..f555c9b 100644
--- a/event-sourcing/event-store-memory/build.gradle
+++ b/event-sourcing/event-store-memory/build.gradle
@@ -1,18 +1,52 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'scala'
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
-    implementation project(':event-sourcing:event-sourcing-event-store-api')
+    api project(':event-sourcing:event-sourcing-pojo')
+    api project(':event-sourcing:event-sourcing-event-store-api')
+
+    implementation 'com.google.guava:guava:25.1-jre'
     implementation 'io.projectreactor:reactor-scala-extensions_2.13:0.5.1'
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
+    implementation 'org.reactivestreams:reactive-streams:1.0.3'
+
     testImplementation project(':event-sourcing:event-sourcing-core')
-    testImplementation project(':event-sourcing:event-sourcing-core')
-    testImplementation project(':event-sourcing:event-sourcing-event-store-api')
+    testImplementation project(path: ':event-sourcing:event-sourcing-core', configuration: 'tests')
+    testImplementation project(path: ':event-sourcing:event-sourcing-event-store-api', configuration: 'tests')
     testImplementation project(':event-sourcing:event-sourcing-pojo')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
+}
+
+// https://stackoverflow.com/questions/23261075/compiling-scala-before-alongside-java-with-gradle
+sourceSets {
+    main {
+        scala {
+            srcDirs = ['src/main/scala', 'src/main/java']
+        }
+        java {
+            srcDirs = []
+        }
+    }
 }
 
 description = 'Apache James :: Event sourcing :: Event Store :: Memory'
@@ -22,4 +56,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/mailbox/api/build.gradle b/mailbox/api/build.gradle
index 4b0c816..11e6615 100644
--- a/mailbox/api/build.gradle
+++ b/mailbox/api/build.gradle
@@ -12,6 +12,7 @@ configurations {
 dependencies {
     implementation project(':james-core')
     implementation project(':james-server:james-server-task-api')
+
     implementation 'org.apache.james:apache-mime4j-dom:0.8.3'
     implementation 'com.github.fge:throwing-lambdas:0.5.0'
     implementation 'com.github.steveash.guavate:guavate:1.0.0'
diff --git a/mailbox/backup/build.gradle b/mailbox/backup/build.gradle
index 27531be..0063433 100644
--- a/mailbox/backup/build.gradle
+++ b/mailbox/backup/build.gradle
@@ -1,13 +1,17 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
 configurations {
     tests
 }
 
 dependencies {
     implementation project(':james-core')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':james-server:james-server-util')
 
     implementation 'org.reactivestreams:reactive-streams:1.0.3'
diff --git a/mailbox/cassandra/build.gradle b/mailbox/cassandra/build.gradle
index bbd2398..79c2168 100644
--- a/mailbox/cassandra/build.gradle
+++ b/mailbox/cassandra/build.gradle
@@ -5,6 +5,10 @@ plugins {
     id 'java-library'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(":james-core")
     implementation project(":james-json")
@@ -13,7 +17,7 @@ dependencies {
     api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':james-server:james-server-blob:blob-api')
-    implementation project(':james-server:james-server-task-api')
+    api project(':james-server:james-server-task-api')
     implementation project(':james-server:james-server-task-json')
     implementation project(':james-server:james-server-util')
 
@@ -78,4 +82,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/mailbox/elasticsearch/build.gradle b/mailbox/elasticsearch/build.gradle
index 22a57f6..d11f477 100644
--- a/mailbox/elasticsearch/build.gradle
+++ b/mailbox/elasticsearch/build.gradle
@@ -1,6 +1,9 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-core')
diff --git a/mailbox/event/event-cassandra/build.gradle b/mailbox/event/event-cassandra/build.gradle
index b171955..ae9bdc4 100644
--- a/mailbox/event/event-cassandra/build.gradle
+++ b/mailbox/event/event-cassandra/build.gradle
@@ -1,11 +1,18 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':james-backends-common:apache-james-backends-cassandra')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-event-json')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-event-json')
 
     implementation 'com.typesafe.play:play-json_2.13:2.8.1'
     implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
@@ -38,4 +45,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/mailbox/event/event-memory/build.gradle b/mailbox/event/event-memory/build.gradle
index b5a9502..112a5cf 100644
--- a/mailbox/event/event-memory/build.gradle
+++ b/mailbox/event/event-memory/build.gradle
@@ -1,10 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(":james-core")
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':james-server:james-server-util')
     implementation project(':metrics:metrics-api')
 
diff --git a/mailbox/event/event-rabbitmq/build.gradle b/mailbox/event/event-rabbitmq/build.gradle
index 885f86e..78d4021 100644
--- a/mailbox/event/event-rabbitmq/build.gradle
+++ b/mailbox/event/event-rabbitmq/build.gradle
@@ -1,12 +1,15 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-core')
     implementation project(':james-server:james-server-util')
     implementation project(':james-backends-common:apache-james-backends-rabbitmq')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-event-json')
     implementation project(':james-server:james-server-lifecycle-api')
     implementation project(':metrics:metrics-api')
diff --git a/mailbox/event/json/build.gradle b/mailbox/event/json/build.gradle
index ebac4ad..605e4e5 100644
--- a/mailbox/event/json/build.gradle
+++ b/mailbox/event/json/build.gradle
@@ -2,12 +2,13 @@
  * This file was generated by the Gradle 'init' task.
  */
 plugins {
+    id 'java-library'
     id 'scala'
 }
 
 dependencies {
     implementation project(':james-core')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
 
     implementation 'com.beachape:enumeratum_2.13:1.5.13'
     implementation 'com.typesafe.play:play-json_2.13:2.8.1'
diff --git a/mailbox/jpa/build.gradle b/mailbox/jpa/build.gradle
index 4dc1dec..e070b34 100644
--- a/mailbox/jpa/build.gradle
+++ b/mailbox/jpa/build.gradle
@@ -22,7 +22,7 @@ dependencies {
     implementation project(':james-core')
 
     implementation project(':james-backends-common:apache-james-backends-jpa')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':james-server:james-server-util')
 
diff --git a/mailbox/lucene/build.gradle b/mailbox/lucene/build.gradle
index c8d23b9..05c3955 100644
--- a/mailbox/lucene/build.gradle
+++ b/mailbox/lucene/build.gradle
@@ -1,10 +1,15 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    implementation project(':james-core')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
+
     implementation 'org.apache.james:apache-mime4j-core:0.8.3'
     implementation 'org.apache.james:apache-mime4j-dom:0.8.3'
     implementation 'com.sun.mail:javax.mail:1.6.2'
@@ -12,16 +17,36 @@ dependencies {
     implementation 'org.apache.lucene:lucene-core:3.6.2'
     implementation 'org.apache.lucene:lucene-smartcn:3.6.2'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
+    implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'com.github.fge:throwing-lambdas:0.5.0'
+    implementation 'javax.inject:javax.inject:1'
+    implementation 'javax.annotation:javax.annotation-api:1.3.2'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-event-memory')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-store', configuration: 'tests')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.awaitility:awaitility:3.1.6'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
+
+
 description = 'Apache James :: Mailbox :: Lucene Index'
 
 tasks.register('testsJar', Jar) {
diff --git a/mailbox/maildir/build.gradle b/mailbox/maildir/build.gradle
index 0879f08..0881461 100644
--- a/mailbox/maildir/build.gradle
+++ b/mailbox/maildir/build.gradle
@@ -1,22 +1,42 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
+    implementation project(':james-core')
     implementation project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
+
     implementation 'org.apache.james:apache-mime4j-core:0.8.3'
     implementation 'org.apache.james:apache-mime4j-dom:0.8.3'
     implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'commons-io:commons-io:2.6'
     implementation 'org.apache.commons:commons-lang3:3.9'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
+    implementation 'com.github.fge:throwing-lambdas:0.5.0'
+    implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-event-memory')
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Maildir'
diff --git a/mailbox/memory/build.gradle b/mailbox/memory/build.gradle
index d37c0d9..e2fabd6 100644
--- a/mailbox/memory/build.gradle
+++ b/mailbox/memory/build.gradle
@@ -1,6 +1,9 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 configurations {
     tests
@@ -9,7 +12,7 @@ configurations {
 dependencies {
     implementation project(':james-core')
 
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':james-server:james-server-util')
 
diff --git a/mailbox/plugin/deleted-messages-vault-cassandra/build.gradle b/mailbox/plugin/deleted-messages-vault-cassandra/build.gradle
index 31a8a34..f92d770 100644
--- a/mailbox/plugin/deleted-messages-vault-cassandra/build.gradle
+++ b/mailbox/plugin/deleted-messages-vault-cassandra/build.gradle
@@ -1,13 +1,16 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-core')
     implementation project(':james-server:james-server-util')
     implementation project(':james-server:james-server-blob:blob-api')
     implementation project(':james-backends-common:apache-james-backends-cassandra')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-deleted-messages-vault')
 
     implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
diff --git a/mailbox/plugin/deleted-messages-vault/build.gradle b/mailbox/plugin/deleted-messages-vault/build.gradle
index 3809216..7d544a8 100644
--- a/mailbox/plugin/deleted-messages-vault/build.gradle
+++ b/mailbox/plugin/deleted-messages-vault/build.gradle
@@ -1,6 +1,9 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 configurations {
     tests
@@ -9,7 +12,7 @@ configurations {
 dependencies {
     implementation project(':james-core')
     implementation project(':james-json')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':apache-james-mailbox:backup')
     implementation project(':james-server:james-server-blob:blob-api')
diff --git a/mailbox/plugin/quota-mailing-cassandra/build.gradle b/mailbox/plugin/quota-mailing-cassandra/build.gradle
index d86e035..bb9436d 100644
--- a/mailbox/plugin/quota-mailing-cassandra/build.gradle
+++ b/mailbox/plugin/quota-mailing-cassandra/build.gradle
@@ -1,13 +1,17 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(":james-core")
+    implementation project(":james-json")
 
     implementation project(':james-backends-common:apache-james-backends-cassandra')
 
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-quota-mailing')
 
     implementation project(':event-sourcing:event-sourcing-pojo')
@@ -16,18 +20,24 @@ dependencies {
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
     implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9'
     implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'org.scala-lang:scala-library:2.13.1'
+    implementation 'org.apache.commons:commons-lang3:3.9'
 
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-quota-mailing')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-quota-mailing', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
     testImplementation project(':apache-mailet:apache-mailet-test')
     testImplementation project(':event-sourcing:event-sourcing-core')
     testImplementation project(':event-sourcing:event-sourcing-event-store-api')
     testImplementation project(':event-sourcing:event-sourcing-event-store-cassandra')
-    testImplementation project(':james-json')
+    testImplementation project(path: ':event-sourcing:event-sourcing-event-store-cassandra', configuration: 'tests')
+
+    testImplementation project(path: ':james-json', configuration: 'tests')
     testImplementation project(':james-server:james-server-core')
     testImplementation project(':james-server:james-server-data-memory')
+    testImplementation project(':james-server:james-server-util')
+
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
 
diff --git a/mailbox/plugin/quota-mailing-memory/build.gradle b/mailbox/plugin/quota-mailing-memory/build.gradle
index 8659d11..f0e7d3d 100644
--- a/mailbox/plugin/quota-mailing-memory/build.gradle
+++ b/mailbox/plugin/quota-mailing-memory/build.gradle
@@ -1,23 +1,36 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':apache-james-mailbox:apache-james-mailbox-quota-mailing')
     implementation project(':event-sourcing:event-sourcing-event-store-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-quota-mailing')
+
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-quota-mailing', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
     testImplementation project(':apache-mailet:apache-mailet-base')
     testImplementation project(':apache-mailet:apache-mailet-test')
     testImplementation project(':event-sourcing:event-sourcing-core')
     testImplementation project(':event-sourcing:event-sourcing-event-store-api')
-    testImplementation project(':event-sourcing:event-sourcing-event-store-memory')
+    testImplementation project(path: ':event-sourcing:event-sourcing-event-store-memory', configuration: 'tests')
     testImplementation project(':james-server:james-server-core')
     testImplementation project(':james-server:james-server-data-memory')
+    testImplementation project(path: ':james-server:james-server-data-memory', configuration: 'tests')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Plugin :: Quota Mailing :: Memory'
diff --git a/mailbox/plugin/quota-mailing/build.gradle b/mailbox/plugin/quota-mailing/build.gradle
index 6ff254e..5379d4f 100644
--- a/mailbox/plugin/quota-mailing/build.gradle
+++ b/mailbox/plugin/quota-mailing/build.gradle
@@ -1,11 +1,18 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(":james-core")
 
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-mailet:apache-mailet-api')
 
     implementation project(':event-sourcing:event-sourcing-pojo')
@@ -22,16 +29,37 @@ dependencies {
     implementation 'org.slf4j:jcl-over-slf4j:1.7.27'
     implementation 'org.slf4j:log4j-over-slf4j:1.7.27'
 
+    implementation 'org.reactivestreams:reactive-streams:1.0.3'
+    implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+    implementation 'org.scala-lang:scala-library:2.13.1'
+
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'commons-io:commons-io:2.6'
+    implementation 'com.sun.mail:javax.mail:1.6.2'
+    implementation 'com.github.fge:throwing-lambdas:0.5.0'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-event-memory')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
     testImplementation project(':apache-mailet:apache-mailet-test')
     testImplementation project(':james-server:james-server-core')
+    testImplementation project(':james-server:james-server-data-library')
     testImplementation project(':james-server:james-server-data-memory')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
 
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Plugin :: Quota Mailing'
@@ -41,4 +69,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/mailbox/plugin/quota-search-elasticsearch/build.gradle b/mailbox/plugin/quota-search-elasticsearch/build.gradle
index c7dbfad..a3d988f 100644
--- a/mailbox/plugin/quota-search-elasticsearch/build.gradle
+++ b/mailbox/plugin/quota-search-elasticsearch/build.gradle
@@ -1,27 +1,60 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
+    implementation project(':james-core')
+
     implementation project(':james-backends-common:apache-james-backends-es')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-quota-search')
     implementation project(':james-server:james-server-data-api')
+
+    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.4.3'
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
     implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9'
-    testImplementation project(':james-backends-common:apache-james-backends-es')
+
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'javax.inject:javax.inject:1'
+    implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+    implementation 'org.reactivestreams:reactive-streams:1.0.3'
+    implementation 'org.apache.commons:commons-configuration2:2.7'
+
+    testImplementation project(path: ':james-backends-common:apache-james-backends-es', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-quota-search')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
+    testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
+
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-quota-search', configuration: 'tests')
+
     testImplementation project(':james-core')
+    testImplementation project(path: ':james-core', configuration: 'tests')
+
+    testImplementation project(':james-server:james-server-dnsservice-dnsjava')
     testImplementation project(':james-server:james-server-data-memory')
+    testImplementation project(':james-server:james-server-data-library')
     testImplementation project(':james-server:james-server-testing')
+    testImplementation project(':james-server:james-server-util')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.junit.jupiter:junit-jupiter-migrationsupport:5.5.1'
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Plugin :: Quota Search :: ElasticSearch'
diff --git a/mailbox/plugin/quota-search-scanning/build.gradle b/mailbox/plugin/quota-search-scanning/build.gradle
index 9e09a8e..38898a3 100644
--- a/mailbox/plugin/quota-search-scanning/build.gradle
+++ b/mailbox/plugin/quota-search-scanning/build.gradle
@@ -1,21 +1,47 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
+    implementation project(':james-core')
+
     implementation project(':apache-james-mailbox:apache-james-mailbox-quota-search')
     implementation project(':james-server:james-server-data-api')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    implementation project(':james-server:james-server-data-library')
+    implementation project(':james-server:james-server-util')
+
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'javax.inject:javax.inject:1'
+
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
+    testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-store', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-quota-search')
-    testImplementation project(':james-core')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-quota-search', configuration: 'tests')
+
+    testImplementation project(path: ':james-core', configuration: 'tests')
     testImplementation project(':james-server:james-server-data-memory')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
+
+
 description = 'Apache James :: Mailbox :: Plugin :: Quota Search :: Scanning'
 
 tasks.register('testsJar', Jar) {
diff --git a/mailbox/plugin/quota-search/build.gradle b/mailbox/plugin/quota-search/build.gradle
index fcb6bc0..c70a3c3 100644
--- a/mailbox/plugin/quota-search/build.gradle
+++ b/mailbox/plugin/quota-search/build.gradle
@@ -1,17 +1,38 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':james-core')
+
+    implementation 'com.google.guava:guava:25.1-jre'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':james-core')
+    testImplementation project(path: ':james-core', configuration: 'tests')
     testImplementation project(':james-server:james-server-data-api')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.apache.james:apache-mime4j-dom:0.8.3'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
+
 description = 'Apache James :: Mailbox :: Plugin :: Quota Search :: API'
 
 tasks.register('testsJar', Jar) {
@@ -19,4 +40,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/mailbox/plugin/spamassassin/build.gradle b/mailbox/plugin/spamassassin/build.gradle
index 487ed53..a36199d 100644
--- a/mailbox/plugin/spamassassin/build.gradle
+++ b/mailbox/plugin/spamassassin/build.gradle
@@ -1,18 +1,44 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    implementation project(':james-core')
+
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-mailet:apache-mailet-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':third-party:apache-james-spamassassin')
+    implementation project(':james-server:james-server-util')
+    implementation project(':metrics:metrics-api')
+
+    implementation 'javax.inject:javax.inject:1'
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'com.github.fge:throwing-lambdas:0.5.0'
+    implementation 'org.slf4j:slf4j-api:1.7.27'
+    implementation 'com.sun.mail:javax.mail:1.6.2'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':third-party:apache-james-spamassassin')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Plugin :: SpamAssassin'
diff --git a/mailbox/scanning-search/build.gradle b/mailbox/scanning-search/build.gradle
index 44da1a8..cdf845e 100644
--- a/mailbox/scanning-search/build.gradle
+++ b/mailbox/scanning-search/build.gradle
@@ -1,20 +1,38 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
+
     implementation 'org.slf4j:jcl-over-slf4j:1.7.27'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+    implementation 'com.google.guava:guava:25.1-jre'
+    implementation 'commons-io:commons-io:2.6'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-store')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-store', configuration: 'tests')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.apache.pdfbox:pdfbox:2.0.16'
     testImplementation 'org.awaitility:awaitility:3.1.6'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Scanning'
diff --git a/mailbox/spring/build.gradle b/mailbox/spring/build.gradle
index 213bbd9..631bd22 100644
--- a/mailbox/spring/build.gradle
+++ b/mailbox/spring/build.gradle
@@ -1,9 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    implementation project(':james-core')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-event-memory')
     implementation project(':apache-james-mailbox:apache-james-mailbox-jpa')
     implementation project(':apache-james-mailbox:apache-james-mailbox-lucene')
@@ -12,6 +16,8 @@ dependencies {
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':apache-james-mailbox:apache-james-mailbox-tools-copier')
     implementation project(':apache-james-mailbox:apache-james-mailbox-tools-indexer')
+
+    implementation 'javax.inject:javax.inject:1'
     implementation 'commons-dbcp:commons-dbcp:1.4'
     implementation 'org.apache.derby:derby:10.14.2.0'
     implementation 'org.slf4j:jcl-over-slf4j:1.7.27'
@@ -20,9 +26,18 @@ dependencies {
     implementation 'org.springframework:spring-context:4.3.25.RELEASE'
     implementation 'org.springframework:spring-core:4.3.25.RELEASE'
     implementation 'org.springframework:spring-orm:4.3.25.RELEASE'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Spring'
diff --git a/mailbox/store/build.gradle b/mailbox/store/build.gradle
index 440e47f..d5614b5 100644
--- a/mailbox/store/build.gradle
+++ b/mailbox/store/build.gradle
@@ -1,13 +1,16 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 configurations {
     tests
 }
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-event-memory')
     implementation project(':james-core')
     implementation project(':james-server:james-server-util')
diff --git a/mailbox/tika/build.gradle b/mailbox/tika/build.gradle
index ff8c8b0..8bee031 100644
--- a/mailbox/tika/build.gradle
+++ b/mailbox/tika/build.gradle
@@ -1,6 +1,10 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
 configurations {
     tests
 }
@@ -8,7 +12,7 @@ configurations {
 dependencies {
     implementation project(':james-core')
     implementation project(':james-server:james-server-util')
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':metrics:metrics-api')
 
diff --git a/mailbox/tools/copier/build.gradle b/mailbox/tools/copier/build.gradle
index 7a782fe..1977478 100644
--- a/mailbox/tools/copier/build.gradle
+++ b/mailbox/tools/copier/build.gradle
@@ -1,16 +1,33 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    implementation project(':james-core')
+
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
+
+    implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Tools :: Copier'
diff --git a/mailbox/tools/indexer/build.gradle b/mailbox/tools/indexer/build.gradle
index 9b34b0e..16544f9 100644
--- a/mailbox/tools/indexer/build.gradle
+++ b/mailbox/tools/indexer/build.gradle
@@ -1,30 +1,55 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    implementation project(':james-core')
+    implementation project(':james-json')
+
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-james-mailbox:apache-james-mailbox-store')
     implementation project(':james-server:james-server-task-json')
+    implementation project(':james-server:james-server-util')
+
     implementation 'io.vavr:vavr:0.9.0'
     implementation 'javax.inject:javax.inject:1'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+    implementation 'com.github.steveash.guavate:guavate:1.0.0'
+    implementation 'com.google.guava:guava:25.1-jre'
+
+    implementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
-    testImplementation project(':james-backends-common:apache-james-backends-cassandra')
+    testImplementation project(path: ':james-backends-common:apache-james-backends-cassandra', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-api', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-cassandra')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-cassandra')
-    testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-cassandra', configuration: 'tests')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-memory')
+    testImplementation project(path: ':apache-james-mailbox:apache-james-mailbox-memory', configuration: 'tests')
     testImplementation project(':james-server:james-server-blob:blob-cassandra')
-    testImplementation project(':james-json')
+    testImplementation project(path: ':james-json', configuration: 'tests')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.apache.james:apache-mime4j-dom:0.8.3'
+    testImplementation 'com.datastax.cassandra:cassandra-driver-core:3.7.2'
     testImplementation 'com.fasterxml.jackson.datatype:jackson-datatype-guava:2.9.9'
     testImplementation 'com.google.inject:guice:4.2.2'
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Tools :: Indexer'
diff --git a/mailbox/tools/jpa-migrator/build.gradle b/mailbox/tools/jpa-migrator/build.gradle
index 0843f71..dfd607c 100644
--- a/mailbox/tools/jpa-migrator/build.gradle
+++ b/mailbox/tools/jpa-migrator/build.gradle
@@ -1,10 +1,26 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-backends-common:apache-james-backends-jpa')
+    implementation 'org.apache.openjpa:openjpa:3.1.0'
+    implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+    testCompileOnly 'junit:junit:4.13'
+    testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Mailbox :: Tools :: JPA migrator'
diff --git a/mailbox/tools/quota-recompute/build.gradle b/mailbox/tools/quota-recompute/build.gradle
index 7dd3d30..ad19602 100644
--- a/mailbox/tools/quota-recompute/build.gradle
+++ b/mailbox/tools/quota-recompute/build.gradle
@@ -1,6 +1,10 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
 configurations {
     tests
 }
diff --git a/server/data/data-api/build.gradle b/server/data/data-api/build.gradle
index e36594c..f03b5f6 100644
--- a/server/data/data-api/build.gradle
+++ b/server/data/data-api/build.gradle
@@ -5,6 +5,10 @@ plugins {
     id 'java-library'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(':james-core')
     api project(':james-server:james-server-mailrepository-api')
@@ -16,8 +20,13 @@ dependencies {
     implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'org.slf4j:slf4j-api:1.7.27'
 
-    testImplementation project(':testing-base')
+    testImplementation project(':james-server:james-server-util')
+
     testImplementation 'org.slf4j:jcl-over-slf4j:1.7.27'
+    testImplementation 'com.github.fge:throwing-lambdas:0.5.0'
+    testImplementation 'io.projectreactor:reactor-core:3.3.4.RELEASE'
+    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.1.9'
+    testImplementation 'org.assertj:assertj-core:3.12.2'
 
     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
     testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
@@ -35,4 +44,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-cassandra/build.gradle b/server/data/data-cassandra/build.gradle
index 51e74fe..0f902ea 100644
--- a/server/data/data-cassandra/build.gradle
+++ b/server/data/data-cassandra/build.gradle
@@ -1,6 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(":james-core")
@@ -39,6 +46,7 @@ dependencies {
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
     testImplementation project(':event-sourcing:event-sourcing-event-store-cassandra')
     testImplementation project(':james-json')
+    testImplementation project(path: ':james-json', configuration: 'tests')
     testImplementation project(':james-server:james-server-data-api')
     testImplementation project(':james-server:james-server-data-library')
     testImplementation project(':james-server:james-server-dnsservice-test')
@@ -50,8 +58,17 @@ dependencies {
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
+
+
 description = 'Apache James :: Server :: Data :: Cassandra Persistence'
 
 tasks.register('testsJar', Jar) {
@@ -59,4 +76,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-file/build.gradle b/server/data/data-file/build.gradle
index fbcd49d..01abcad 100644
--- a/server/data/data-file/build.gradle
+++ b/server/data/data-file/build.gradle
@@ -1,6 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':apache-mailet:apache-mailet-api')
@@ -26,6 +33,14 @@ dependencies {
     testImplementation 'io.cucumber:cucumber-java:2.4.0'
     testImplementation 'io.cucumber:cucumber-junit:2.4.0'
     testImplementation 'io.cucumber:cucumber-picocontainer:2.4.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: Data :: File Persistence'
@@ -35,4 +50,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-jdbc/build.gradle b/server/data/data-jdbc/build.gradle
index 4a8d075..860d185 100644
--- a/server/data/data-jdbc/build.gradle
+++ b/server/data/data-jdbc/build.gradle
@@ -1,6 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':apache-mailet:apache-mailet-api')
@@ -28,6 +35,14 @@ dependencies {
     testImplementation 'io.cucumber:cucumber-java:2.4.0'
     testImplementation 'io.cucumber:cucumber-junit:2.4.0'
     testImplementation 'io.cucumber:cucumber-picocontainer:2.4.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: Data :: JDBC Persistence'
@@ -37,4 +52,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-jmap-cassandra/build.gradle b/server/data/data-jmap-cassandra/build.gradle
index 4e56d20..5b43713 100644
--- a/server/data/data-jmap-cassandra/build.gradle
+++ b/server/data/data-jmap-cassandra/build.gradle
@@ -1,15 +1,24 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':james-backends-common:apache-james-backends-cassandra')
     implementation project(':apache-james-mailbox:apache-james-mailbox-cassandra')
     implementation project(':event-sourcing:event-sourcing-event-store-cassandra')
     implementation project(':james-server:james-server-data-jmap')
+
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'javax.inject:javax.inject:1'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
     testImplementation project(':apache-james-mailbox:apache-james-mailbox-api')
     testImplementation project(':event-sourcing:event-sourcing-event-store-cassandra')
@@ -17,12 +26,22 @@ dependencies {
     testImplementation project(':james-server:james-server-data-jmap')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.awaitility:awaitility:3.1.6'
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
+
+
 description = 'Apache James :: Server :: Data :: JMAP :: Cassandra persistance'
 
 tasks.register('testsJar', Jar) {
diff --git a/server/data/data-jmap/build.gradle b/server/data/data-jmap/build.gradle
index d138616..cbcc59c 100644
--- a/server/data/data-jmap/build.gradle
+++ b/server/data/data-jmap/build.gradle
@@ -1,6 +1,13 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':apache-james-mailbox:apache-james-mailbox-api')
@@ -20,6 +27,14 @@ dependencies {
     testImplementation project(':testing-base')
     testImplementation 'org.awaitility:awaitility:3.1.6'
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: Data :: JMAP'
@@ -29,4 +44,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-jpa/build.gradle b/server/data/data-jpa/build.gradle
index d80bc13..79026ae 100644
--- a/server/data/data-jpa/build.gradle
+++ b/server/data/data-jpa/build.gradle
@@ -18,6 +18,10 @@ plugins {
 
 apply plugin: 'openjpa'
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(':james-core')
     implementation project(':james-backends-common:apache-james-backends-jpa')
@@ -65,4 +69,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-ldap/build.gradle b/server/data/data-ldap/build.gradle
index 1c6bf7f..a5d743e 100644
--- a/server/data/data-ldap/build.gradle
+++ b/server/data/data-ldap/build.gradle
@@ -2,11 +2,20 @@
  * This file was generated by the Gradle 'init' task.
  */
 
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(':james-server:james-server-data-api')
     implementation project(':james-server:james-server-data-library')
     implementation project(':james-server:james-server-lifecycle-api')
     implementation project(':james-server:james-server-util')
+
     implementation 'com.github.steveash.guavate:guavate:1.0.0'
     implementation 'javax.annotation:javax.annotation-api:1.3.2'
     implementation 'org.apache.directory.api:api-ldap-model:1.0.3'
@@ -15,13 +24,22 @@ dependencies {
     implementation 'org.slf4j:jcl-over-slf4j:1.7.27'
     implementation 'org.slf4j:slf4j-api:1.7.27'
     implementation 'org.slf4j:log4j-over-slf4j:1.7.27'
+
     testImplementation project(':james-server:james-server-data-library')
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
 description = 'Apache James :: Server :: Data :: LDAP Implementation'
 
 tasks.register('testsJar', Jar) {
@@ -29,4 +47,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-library/build.gradle b/server/data/data-library/build.gradle
index f8e915f..69aa361 100644
--- a/server/data/data-library/build.gradle
+++ b/server/data/data-library/build.gradle
@@ -6,6 +6,10 @@ plugins {
     id 'java-library'
 }
 
+configurations {
+    tests
+}
+
 dependencies {
     implementation project(":james-core")
 
@@ -16,9 +20,9 @@ dependencies {
     implementation project(':event-sourcing:event-sourcing-event-store-api')
 
     api project(':james-server:james-server-data-api')
-    implementation project(':james-server:james-server-dnsservice-api')
-    implementation project(':james-server:james-server-filesystem-api')
-    implementation project(':james-server:james-server-lifecycle-api')
+    api project(':james-server:james-server-dnsservice-api')
+    api project(':james-server:james-server-filesystem-api')
+    api project(':james-server:james-server-lifecycle-api')
     implementation project(':james-server:james-server-util')
 
     implementation 'org.scala-lang:scala-library:2.13.1'
@@ -35,7 +39,7 @@ dependencies {
     implementation 'org.slf4j:log4j-over-slf4j:1.7.27'
     implementation 'org.slf4j:slf4j-api:1.7.27'
 
-    testImplementation project(':james-server:james-server-data-api')
+    testImplementation project(path: ':james-server:james-server-data-api', configuration: 'tests')
     testImplementation project(':james-server:james-server-dnsservice-test')
     testImplementation project(':testing-base')
 
@@ -62,4 +66,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/data/data-memory/build.gradle b/server/data/data-memory/build.gradle
index 7d5f64e..26ae811 100644
--- a/server/data/data-memory/build.gradle
+++ b/server/data/data-memory/build.gradle
@@ -1,14 +1,21 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':james-core')
-    implementation project(':james-server:james-server-lifecycle-api')
-    implementation project(':james-server:james-server-mailrepository-api')
-    implementation project(':james-server:james-server-data-api')
+    api project(':james-server:james-server-lifecycle-api')
+    api project(':james-server:james-server-mailrepository-api')
+    api project(':james-server:james-server-data-api')
     implementation project(':james-server:james-server-data-library')
-    implementation project(':james-server:james-server-dnsservice-api')
+    api project(':james-server:james-server-dnsservice-api')
 
     implementation 'com.github.fge:throwing-lambdas:0.5.0'
     implementation 'org.apache.commons:commons-configuration2:2.7'
@@ -16,20 +23,31 @@ dependencies {
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'org.slf4j:slf4j-api:1.7.27'
     implementation 'javax.inject:javax.inject:1'
+    implementation 'com.sun.mail:javax.mail:1.6.2'
 
     testImplementation project(':apache-mailet:apache-mailet-test')
     testImplementation project(':event-sourcing:event-sourcing-event-store-memory')
     testImplementation project(':james-server:james-server-core')
-    testImplementation project(':james-server:james-server-data-api')
-    testImplementation project(':james-server:james-server-data-library')
+    testImplementation project(path: ':james-server:james-server-data-api', configuration: 'tests')
+    testImplementation project(path: ':james-server:james-server-data-library', configuration: 'tests')
     testImplementation project(':james-server:james-server-dnsservice-test')
     testImplementation project(':james-server:james-server-mailrepository-memory')
+    testImplementation project(':james-server:james-server-util')
+
     testImplementation project(':testing-base')
 
     testImplementation 'io.cucumber:cucumber-java:2.4.0'
     testImplementation 'io.cucumber:cucumber-junit:2.4.0'
     testImplementation 'io.cucumber:cucumber-picocontainer:2.4.0'
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: Data  :: MEMORY'
@@ -39,4 +57,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/dns-service/dnsservice-api/build.gradle b/server/dns-service/dnsservice-api/build.gradle
index 417f226..e101f0a 100644
--- a/server/dns-service/dnsservice-api/build.gradle
+++ b/server/dns-service/dnsservice-api/build.gradle
@@ -1,6 +1,9 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 description = 'Apache James :: Server :: DNS Service :: API'
 
diff --git a/server/dns-service/dnsservice-dnsjava/build.gradle b/server/dns-service/dnsservice-dnsjava/build.gradle
index f62b448..30e9a33 100644
--- a/server/dns-service/dnsservice-dnsjava/build.gradle
+++ b/server/dns-service/dnsservice-dnsjava/build.gradle
@@ -1,11 +1,15 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
-    implementation project(':james-server:james-server-dnsservice-api')
+    api project(':james-server:james-server-dnsservice-api')
     implementation project(':james-server:james-server-lifecycle-api')
     implementation project(':metrics:metrics-api')
+
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'dnsjava:dnsjava:2.1.9'
     implementation 'javax.annotation:javax.annotation-api:1.3.2'
@@ -14,10 +18,20 @@ dependencies {
     implementation 'org.slf4j:jcl-over-slf4j:1.7.27'
     implementation 'org.slf4j:log4j-over-slf4j:1.7.27'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':james-server:james-server-core')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: DNS Service :: Implementation'
diff --git a/server/dns-service/dnsservice-library/build.gradle b/server/dns-service/dnsservice-library/build.gradle
index 8c8cf12..2dea0dc 100644
--- a/server/dns-service/dnsservice-library/build.gradle
+++ b/server/dns-service/dnsservice-library/build.gradle
@@ -1,15 +1,28 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':apache-mailet:apache-mailet-api')
     implementation project(':james-server:james-server-dnsservice-api')
+
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':james-server:james-server-dnsservice-test')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: DNS Service :: Library'
diff --git a/server/dns-service/dnsservice-test/build.gradle b/server/dns-service/dnsservice-test/build.gradle
index 2306c84..b5d860f 100644
--- a/server/dns-service/dnsservice-test/build.gradle
+++ b/server/dns-service/dnsservice-test/build.gradle
@@ -1,11 +1,23 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-server:james-server-dnsservice-api')
+
     implementation project(':testing-base')
     implementation 'com.google.guava:guava:25.1-jre'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: DNS Service :: Test'
diff --git a/server/mailrepository/mailrepository-api/build.gradle b/server/mailrepository/mailrepository-api/build.gradle
index 95458e4..d4cb464 100644
--- a/server/mailrepository/mailrepository-api/build.gradle
+++ b/server/mailrepository/mailrepository-api/build.gradle
@@ -1,9 +1,17 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
-    implementation project(':apache-mailet:apache-mailet-api')
+    api project(':apache-mailet:apache-mailet-api')
+
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'org.apache.commons:commons-lang3:3.9'
@@ -11,6 +19,13 @@ dependencies {
     testImplementation project(':james-server:james-server-core')
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':testing-base')
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: MailRepository :: API'
@@ -20,4 +35,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/mailrepository/mailrepository-cassandra/build.gradle b/server/mailrepository/mailrepository-cassandra/build.gradle
index 2a6c772..743880b 100644
--- a/server/mailrepository/mailrepository-cassandra/build.gradle
+++ b/server/mailrepository/mailrepository-cassandra/build.gradle
@@ -1,18 +1,34 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
 
 dependencies {
     implementation project(':james-backends-common:apache-james-backends-cassandra')
     implementation project(':james-server:james-server-blob:james-server-mail-store')
     implementation project(':james-server:james-server-core')
-    implementation project(':james-server:james-server-mailrepository-api')
+    api project(':james-server:james-server-mailrepository-api')
+
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
     testImplementation project(':james-server:james-server-blob:blob-cassandra')
     testImplementation project(':james-server:james-server-blob:blob-api')
     testImplementation project(':james-server:james-server-mailrepository-api')
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: MailRepository :: Cassandra'
@@ -22,4 +38,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/mailrepository/mailrepository-memory/build.gradle b/server/mailrepository/mailrepository-memory/build.gradle
index 0a43533..d99c3f3 100644
--- a/server/mailrepository/mailrepository-memory/build.gradle
+++ b/server/mailrepository/mailrepository-memory/build.gradle
@@ -2,10 +2,29 @@
  * This file was generated by the Gradle 'init' task.
  */
 
+plugins {
+    id 'java-library'
+}
+
+configurations {
+    tests
+}
+
 dependencies {
-    implementation project(':james-server:james-server-mailrepository-api')
+    api project(':james-server:james-server-mailrepository-api')
+    implementation 'com.sun.mail:javax.mail:1.6.2'
+
     testImplementation project(':james-server:james-server-mailrepository-api')
+//    testImplementation project(path: ':james-server:james-server-data-library', configuration: 'tests')
     testImplementation project(':testing-base')
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: MailRepository :: Memory'
@@ -15,4 +34,8 @@ tasks.register('testsJar', Jar) {
     from(sourceSets.test.output)
 }
 
+artifacts {
+    tests testsJar
+}
+
 publishing.publications.maven.artifact(testsJar)
diff --git a/server/task/task-api/build.gradle b/server/task/task-api/build.gradle
index c9325bb..0786577 100644
--- a/server/task/task-api/build.gradle
+++ b/server/task/task-api/build.gradle
@@ -4,6 +4,7 @@
 
 plugins {
     id 'scala'
+    id 'java-library'
 }
 
 dependencies {
@@ -20,8 +21,16 @@ dependencies {
     implementation 'org.scala-lang:scala-library:2.13.1'
     testImplementation 'org.scalatest:scalatest_2.13:3.2.0'
 
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
 }
 
+test {
+    useJUnitPlatform()
+}
+
+
 // https://stackoverflow.com/questions/23261075/compiling-scala-before-alongside-java-with-gradle
 sourceSets {
     main {
diff --git a/server/task/task-distributed/build.gradle b/server/task/task-distributed/build.gradle
index 4466bb0..4576c92 100644
--- a/server/task/task-distributed/build.gradle
+++ b/server/task/task-distributed/build.gradle
@@ -1,18 +1,23 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-backends-common:apache-james-backends-cassandra')
     implementation project(':james-backends-common:apache-james-backends-rabbitmq')
     implementation project(':event-sourcing:event-sourcing-event-store-cassandra')
     implementation project(':james-json')
-    implementation project(':james-server:james-server-lifecycle-api')
+    api project(':james-server:james-server-lifecycle-api')
     implementation project(':james-server:james-server-task-json')
     implementation project(':james-server:james-server-task-memory')
+
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
+
     testImplementation project(':james-backends-common:apache-james-backends-cassandra')
     testImplementation project(':james-backends-common:apache-james-backends-rabbitmq')
     testImplementation project(':event-sourcing:event-sourcing-event-store-cassandra')
@@ -22,12 +27,22 @@ dependencies {
     testImplementation project(':james-server:james-server-task-memory')
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':testing-base')
+
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.awaitility:awaitility:3.1.6'
     testImplementation 'org.mockito:mockito-core:3.0.0'
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
+
 description = 'Apache James :: Server :: Task :: Distributed'
 
 tasks.register('testsJar', Jar) {
diff --git a/server/task/task-json/build.gradle b/server/task/task-json/build.gradle
index 022c5e6..6823133 100644
--- a/server/task/task-json/build.gradle
+++ b/server/task/task-json/build.gradle
@@ -1,11 +1,15 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
     implementation project(':james-json')
-    implementation project(':james-server:james-server-task-api')
+    api project(':james-server:james-server-task-api')
 
+    api 'com.fasterxml.jackson.core:jackson-annotations:2.9.9'
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
     implementation 'javax.inject:javax.inject:1'
     implementation 'com.google.guava:guava:25.1-jre'
@@ -16,6 +20,14 @@ dependencies {
 
     testImplementation 'net.javacrumbs.json-unit:json-unit-assertj:2.8.0'
     testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Server :: Task :: Json'
diff --git a/server/task/task-memory/build.gradle b/server/task/task-memory/build.gradle
index f5cad18..68e65f1 100644
--- a/server/task/task-memory/build.gradle
+++ b/server/task/task-memory/build.gradle
@@ -4,6 +4,7 @@
 
 plugins {
     id 'scala'
+    id 'java-library'
 }
 
 dependencies {
@@ -13,19 +14,12 @@ dependencies {
 
     implementation project(':james-server:james-server-lifecycle-api')
     implementation project(':james-server:james-server-util')
-    implementation project(':james-server:james-server-task-api')
+    api project(':james-server:james-server-task-api')
 
     implementation 'javax.annotation:javax.annotation-api:1.3.2'
     implementation 'org.scala-lang:scala-library:2.13.1'
     implementation 'org.scala-lang.modules:scala-java8-compat_2.13:0.9.0'
 
-    testImplementation project(':event-sourcing:event-sourcing-event-store-memory')
-    testImplementation project(':james-server:james-server-task-api')
-    testImplementation project(':testing-base')
-
-    testImplementation 'org.awaitility:awaitility:3.1.6'
-    testImplementation 'org.mockito:mockito-core:3.0.0'
-
     implementation 'org.slf4j:slf4j-api:1.7.27'
     implementation 'javax.inject:javax.inject:1'
     implementation 'org.reactivestreams:reactive-streams:1.0.3'
@@ -34,8 +28,23 @@ dependencies {
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'com.github.steveash.guavate:guavate:1.0.0'
 
+    testImplementation project(':event-sourcing:event-sourcing-event-store-memory')
+    testImplementation project(':james-server:james-server-task-api')
+    testImplementation project(':testing-base')
+
+    testImplementation 'org.awaitility:awaitility:3.1.6'
+    testImplementation 'org.mockito:mockito-core:3.0.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
+
 // https://stackoverflow.com/questions/23261075/compiling-scala-before-alongside-java-with-gradle
 sourceSets {
     main {
diff --git a/third-party/spamassassin/build.gradle b/third-party/spamassassin/build.gradle
index b79b234..221b20b 100644
--- a/third-party/spamassassin/build.gradle
+++ b/third-party/spamassassin/build.gradle
@@ -1,21 +1,36 @@
 /*
  * This file was generated by the Gradle 'init' task.
  */
+plugins {
+    id 'java-library'
+}
 
 dependencies {
+    api project(':apache-james-mailbox:apache-james-mailbox-api')
     implementation project(':apache-mailet:apache-mailet-api')
     implementation project(':james-core')
     implementation project(':metrics:metrics-api')
+
     implementation 'com.github.fge:throwing-lambdas:0.5.0'
     implementation 'com.google.guava:guava:25.1-jre'
     implementation 'com.sun.mail:javax.mail:1.6.2'
     implementation 'commons-io:commons-io:2.6'
     implementation 'org.apache.commons:commons-lang3:3.9'
     implementation 'org.slf4j:slf4j-api:1.7.27'
+
     testImplementation project(':james-server:james-server-testing')
     testImplementation project(':metrics:metrics-tests')
     testImplementation project(':testing-base')
+
     testImplementation 'org.testcontainers:testcontainers:1.12.0'
+
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
+    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.1'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
+}
+
+test {
+    useJUnitPlatform()
 }
 
 description = 'Apache James :: Third Party :: SpamAssassin'


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org