diff --git a/build.gradle b/build.gradle index 64cb2b62e..5acc04281 100644 --- a/build.gradle +++ b/build.gradle @@ -37,14 +37,14 @@ subprojects { apply plugin: 'java-library' dependencies { - implementation libs.scala.library + api libs.scala.library // Seems we need to lock these down, otherwise we get runtime errors on reflection - implementation libs.scala.lang.compiler - implementation libs.scala.lang.reflect + api libs.scala.lang.compiler + api libs.scala.lang.reflect - implementation libs.log4j.api - implementation libs.scala.log4j.api + api libs.log4j.api + api libs.scala.log4j.api testImplementation libs.log4j.core testImplementation libs.testing.scala.scalatest diff --git a/build.publishing.gradle b/build.publishing.gradle index f3c965b4a..f814c26ed 100644 --- a/build.publishing.gradle +++ b/build.publishing.gradle @@ -50,6 +50,28 @@ subprojects { artifact tasks.jar artifact tasks.sourceJar + // TODO: VN: I don't quite like this - let's figure out a more generic way + pom.withXml { + def dependenciesNode = asNode().appendNode('dependencies') + configurations.runtimeClasspath.allDependencies.each { dep -> + if (dep.group && dep.name && dep.version) { + def depNode = dependenciesNode.appendNode('dependency') + depNode.appendNode('groupId', dep.group) + depNode.appendNode('artifactId', dep.name) + depNode.appendNode('version', dep.version) + depNode.appendNode('scope', 'compile') + if (dep.hasProperty('excludeRules') && dep.excludeRules) { + def exclusionsNode = depNode.appendNode('exclusions') + dep.excludeRules.each { rule -> + def exclusionNode = exclusionsNode.appendNode('exclusion') + exclusionNode.appendNode('groupId', rule.group ?: '*') + exclusionNode.appendNode('artifactId', rule.module ?: '*') + } + } + } + } + } + afterEvaluate { pom pomConfig artifacts = pub.dev.artifacts @@ -62,6 +84,29 @@ subprojects { artifact tasks.jar artifact tasks.sourceJar + // TODO: VN: I don't quite like this - let's figure out a more generic way + pom.withXml { + def dependenciesNode = asNode().appendNode('dependencies') + configurations.runtimeClasspath.allDependencies.each { dep -> + if (dep.group && dep.name && dep.version) { + def depNode = dependenciesNode.appendNode('dependency') + depNode.appendNode('groupId', dep.group) + depNode.appendNode('artifactId', dep.name) + depNode.appendNode('version', dep.version) + depNode.appendNode('scope', 'compile') + if (dep.hasProperty('excludeRules') && dep.excludeRules) { + def exclusionsNode = depNode.appendNode('exclusions') + dep.excludeRules.each { rule -> + def exclusionNode = exclusionsNode.appendNode('exclusion') + exclusionNode.appendNode('groupId', rule.group ?: '*') + exclusionNode.appendNode('artifactId', rule.module ?: '*') + } + } + } + } + } + + afterEvaluate { pom pomConfig artifacts = pub.full.artifacts diff --git a/graph-ddl/build.gradle b/graph-ddl/build.gradle index 7f0954ee0..aa947a571 100644 --- a/graph-ddl/build.gradle +++ b/graph-ddl/build.gradle @@ -4,8 +4,8 @@ dependencies { api project(':okapi-trees') api project(':okapi-api') - implementation libs.scala.fastparse - implementation libs.scala.typelevel.cats.core + api libs.scala.fastparse + api libs.scala.typelevel.cats.core testImplementation project(':okapi-testing') } diff --git a/morpheus-examples/build.gradle b/morpheus-examples/build.gradle index ab2eeb1c7..b2bfcc290 100644 --- a/morpheus-examples/build.gradle +++ b/morpheus-examples/build.gradle @@ -4,20 +4,20 @@ dependencies { api project(':morpheus-spark-cypher') api project(':morpheus-testing') - implementation libs.log4j.core + api libs.log4j.core - implementation libs.scala.spark.graphx - implementation libs.scala.spark.sql - implementation(libs.scala.spark.catalyst.get()) + api libs.scala.spark.graphx + api libs.scala.spark.sql + api(libs.scala.spark.catalyst.get()) .exclude(group: libs.exclusions.slf4j.log4j12.get().group, module: libs.exclusions.slf4j.log4j12.get().name) - implementation libs.netty.all - implementation libs.h2 - implementation(libs.scala.upickle.get()) + api libs.netty.all + api libs.h2 + api(libs.scala.upickle.get()) .exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name) .exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name) - implementation libs.neo4j.java.driver + api libs.neo4j.java.driver testImplementation libs.testcontainers.neo4j } diff --git a/morpheus-jmh/build.gradle b/morpheus-jmh/build.gradle index 712fbba16..c21d0f173 100644 --- a/morpheus-jmh/build.gradle +++ b/morpheus-jmh/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'me.champeau.jmh' description = 'Micro benchmarks for Cypher for Apache Spark' -configurations.implementation { +configurations.api { exclude( group: libs.exclusions.slf4j.log4j12.get().group, module: libs.exclusions.slf4j.log4j12.get().name @@ -12,9 +12,9 @@ configurations.implementation { dependencies { api project(':morpheus-spark-cypher') - implementation libs.scala.spark.core - implementation libs.scala.spark.sql - implementation libs.scala.spark.catalyst + api libs.scala.spark.core + api libs.scala.spark.sql + api libs.scala.spark.catalyst } jmh { diff --git a/morpheus-spark-cypher/build.gradle b/morpheus-spark-cypher/build.gradle index e22b8cf9e..b48c87993 100644 --- a/morpheus-spark-cypher/build.gradle +++ b/morpheus-spark-cypher/build.gradle @@ -13,7 +13,7 @@ if (project.hasProperty('testOkapiShade')) { } } dependencies { - implementation group: 'org.opencypher', name: 'okapi-shade', version: ver.self + api group: 'org.opencypher', name: 'okapi-shade', version: ver.self } } @@ -22,12 +22,12 @@ dependencies { api project(':okapi-neo4j-io') api project(':graph-ddl') - implementation(libs.scala.upickle.get()) + api(libs.scala.upickle.get()) .exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name) .exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name) - implementation libs.scala.typelevel.cats.core - implementation libs.neo4j.java.driver + api libs.scala.typelevel.cats.core + api libs.neo4j.java.driver compileOnly libs.scala.spark.core compileOnly libs.scala.spark.sql diff --git a/morpheus-testing/build.gradle b/morpheus-testing/build.gradle index 31f236fb5..fce50c9b1 100644 --- a/morpheus-testing/build.gradle +++ b/morpheus-testing/build.gradle @@ -5,19 +5,19 @@ dependencies { api project(':okapi-testing') api project(':okapi-neo4j-io-testing') - implementation libs.scala.spark.core - implementation libs.scala.spark.sql - implementation libs.scala.spark.hive - implementation libs.hadoop.client.minicluster + api libs.scala.spark.core + api libs.scala.spark.sql + api libs.scala.spark.hive + api libs.hadoop.client.minicluster - implementation libs.testing.scala.scalatest - implementation libs.testing.mockito.all + api libs.testing.scala.scalatest + api libs.testing.mockito.all testImplementation project(':okapi-api').sourceSets.test.output testImplementation libs.h2 testImplementation libs.scala.claimant - implementation(libs.scala.upickle.get()) + api(libs.scala.upickle.get()) .exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name) .exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name) diff --git a/okapi-api/build.gradle b/okapi-api/build.gradle index b3e566e26..66c209e85 100644 --- a/okapi-api/build.gradle +++ b/okapi-api/build.gradle @@ -3,17 +3,17 @@ description = 'Okapi - openCypher API' dependencies { api project(':okapi-trees') - implementation(libs.opencypher.frontend.get()).exclude( + api(libs.opencypher.frontend.get()).exclude( group: libs.testing.scala.scalacheck.get().group, module: libs.testing.scala.scalacheck.get().name ) - implementation libs.scala.typelevel.cats.core - implementation(libs.scala.upickle.get()) + api libs.scala.typelevel.cats.core + api(libs.scala.upickle.get()) .exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name) .exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name) - implementation libs.scala.fastparse + api libs.scala.fastparse testImplementation libs.scala.typelevel.discipline testImplementation libs.scala.typelevel.cats.laws diff --git a/okapi-ir/build.gradle b/okapi-ir/build.gradle index 0f1578b08..f6e295962 100644 --- a/okapi-ir/build.gradle +++ b/okapi-ir/build.gradle @@ -3,11 +3,11 @@ description = 'Okapi IR - Declarative representation of Cypher queries' dependencies { api project(':okapi-api') - implementation libs.opencypher.expressions - implementation libs.opencypher.ast - implementation libs.opencypher.rewriting - implementation libs.opencypher.frontend - implementation libs.scala.eff + api libs.opencypher.expressions + api libs.opencypher.ast + api libs.opencypher.rewriting + api libs.opencypher.frontend + api libs.scala.eff testImplementation project(':okapi-testing') diff --git a/okapi-logical/build.gradle b/okapi-logical/build.gradle index ab35fe78e..ea6d90f18 100644 --- a/okapi-logical/build.gradle +++ b/okapi-logical/build.gradle @@ -3,7 +3,7 @@ description = 'Okapi Logical - Logical representation of Cypher queries' dependencies { api project(':okapi-ir') - implementation libs.opencypher.expressions + api libs.opencypher.expressions testImplementation project(':okapi-testing') testImplementation libs.opencypher.frontend diff --git a/okapi-neo4j-io-testing/build.gradle b/okapi-neo4j-io-testing/build.gradle index d034bdaf9..d1beb241d 100644 --- a/okapi-neo4j-io-testing/build.gradle +++ b/okapi-neo4j-io-testing/build.gradle @@ -4,10 +4,10 @@ dependencies { api project(':okapi-neo4j-io') api project(':okapi-testing') - implementation libs.neo4j.java.driver - implementation libs.bouncycastle - implementation libs.testing.scala.scalatest - implementation libs.testcontainers.neo4j + api libs.neo4j.java.driver + api libs.bouncycastle + api libs.testing.scala.scalatest + api libs.testcontainers.neo4j } // We ignore the license check here for unknown historic reasons. diff --git a/okapi-neo4j-io/build.gradle b/okapi-neo4j-io/build.gradle index b027dd200..41459012f 100644 --- a/okapi-neo4j-io/build.gradle +++ b/okapi-neo4j-io/build.gradle @@ -3,5 +3,5 @@ description = 'Okapi - Neo4j IO' dependencies { api project(':okapi-api') - implementation libs.neo4j.java.driver + api libs.neo4j.java.driver } diff --git a/okapi-relational/build.gradle b/okapi-relational/build.gradle index b3e1097f1..17a026d3b 100644 --- a/okapi-relational/build.gradle +++ b/okapi-relational/build.gradle @@ -5,8 +5,8 @@ description = 'Okapi Relational - Relational Algebra for Cypher' dependencies { api project(':okapi-logical') - implementation libs.opencypher.frontend - implementation libs.scala.typelevel.cats.core + api libs.opencypher.frontend + api libs.scala.typelevel.cats.core testImplementation project(':okapi-testing') } diff --git a/okapi-tck/build.gradle b/okapi-tck/build.gradle index 21c644d18..6d23f9a0f 100644 --- a/okapi-tck/build.gradle +++ b/okapi-tck/build.gradle @@ -7,8 +7,8 @@ dependencies { api libs.opencypher.tck api libs.opencypher.tck.api - implementation libs.apache.commons.text - implementation libs.testing.scala.scalatest + api libs.apache.commons.text + api libs.testing.scala.scalatest } // We ignore the license check here for unknown historic reasons. diff --git a/okapi-testing/build.gradle b/okapi-testing/build.gradle index 7c5a9ca78..39dc5aa4f 100644 --- a/okapi-testing/build.gradle +++ b/okapi-testing/build.gradle @@ -3,13 +3,13 @@ description = 'Okapi Test Utilities' dependencies { api project(':okapi-api') - implementation libs.opencypher.expressions - implementation libs.opencypher.frontend + api libs.opencypher.expressions + api libs.opencypher.frontend - implementation libs.scala.typelevel.cats.core - implementation libs.testing.junit - implementation libs.testing.mockito.all - implementation libs.testing.scala.scalatest + api libs.scala.typelevel.cats.core + api libs.testing.junit + api libs.testing.mockito.all + api libs.testing.scala.scalatest } // We ignore the license check here for unknown historic reasons. diff --git a/okapi-trees/build.gradle b/okapi-trees/build.gradle index 02a39d6ba..a3c82de3f 100644 --- a/okapi-trees/build.gradle +++ b/okapi-trees/build.gradle @@ -1,7 +1,7 @@ description = 'Okapi Trees - Tree rewriting framework for Okapi' dependencies { - implementation libs.scala.typelevel.cats.core + api libs.scala.typelevel.cats.core testImplementation libs.testing.junit }