Skip to content

Commit 295c0e0

Browse files
authored
include transitive dependencies in poms (#980)
* Expose dependencies as transitive * Configure publishing tasks to include transitive dependencies
1 parent 5819ff3 commit 295c0e0

File tree

16 files changed

+101
-56
lines changed

16 files changed

+101
-56
lines changed

build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ subprojects {
3737
apply plugin: 'java-library'
3838

3939
dependencies {
40-
implementation libs.scala.library
40+
api libs.scala.library
4141

4242
// Seems we need to lock these down, otherwise we get runtime errors on reflection
43-
implementation libs.scala.lang.compiler
44-
implementation libs.scala.lang.reflect
43+
api libs.scala.lang.compiler
44+
api libs.scala.lang.reflect
4545

46-
implementation libs.log4j.api
47-
implementation libs.scala.log4j.api
46+
api libs.log4j.api
47+
api libs.scala.log4j.api
4848

4949
testImplementation libs.log4j.core
5050
testImplementation libs.testing.scala.scalatest

build.publishing.gradle

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,28 @@ subprojects {
5050
artifact tasks.jar
5151
artifact tasks.sourceJar
5252

53+
// TODO: VN: I don't quite like this - let's figure out a more generic way
54+
pom.withXml {
55+
def dependenciesNode = asNode().appendNode('dependencies')
56+
configurations.runtimeClasspath.allDependencies.each { dep ->
57+
if (dep.group && dep.name && dep.version) {
58+
def depNode = dependenciesNode.appendNode('dependency')
59+
depNode.appendNode('groupId', dep.group)
60+
depNode.appendNode('artifactId', dep.name)
61+
depNode.appendNode('version', dep.version)
62+
depNode.appendNode('scope', 'compile')
63+
if (dep.hasProperty('excludeRules') && dep.excludeRules) {
64+
def exclusionsNode = depNode.appendNode('exclusions')
65+
dep.excludeRules.each { rule ->
66+
def exclusionNode = exclusionsNode.appendNode('exclusion')
67+
exclusionNode.appendNode('groupId', rule.group ?: '*')
68+
exclusionNode.appendNode('artifactId', rule.module ?: '*')
69+
}
70+
}
71+
}
72+
}
73+
}
74+
5375
afterEvaluate {
5476
pom pomConfig
5577
artifacts = pub.dev.artifacts
@@ -62,6 +84,29 @@ subprojects {
6284
artifact tasks.jar
6385
artifact tasks.sourceJar
6486

87+
// TODO: VN: I don't quite like this - let's figure out a more generic way
88+
pom.withXml {
89+
def dependenciesNode = asNode().appendNode('dependencies')
90+
configurations.runtimeClasspath.allDependencies.each { dep ->
91+
if (dep.group && dep.name && dep.version) {
92+
def depNode = dependenciesNode.appendNode('dependency')
93+
depNode.appendNode('groupId', dep.group)
94+
depNode.appendNode('artifactId', dep.name)
95+
depNode.appendNode('version', dep.version)
96+
depNode.appendNode('scope', 'compile')
97+
if (dep.hasProperty('excludeRules') && dep.excludeRules) {
98+
def exclusionsNode = depNode.appendNode('exclusions')
99+
dep.excludeRules.each { rule ->
100+
def exclusionNode = exclusionsNode.appendNode('exclusion')
101+
exclusionNode.appendNode('groupId', rule.group ?: '*')
102+
exclusionNode.appendNode('artifactId', rule.module ?: '*')
103+
}
104+
}
105+
}
106+
}
107+
}
108+
109+
65110
afterEvaluate {
66111
pom pomConfig
67112
artifacts = pub.full.artifacts

graph-ddl/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ dependencies {
44
api project(':okapi-trees')
55
api project(':okapi-api')
66

7-
implementation libs.scala.fastparse
8-
implementation libs.scala.typelevel.cats.core
7+
api libs.scala.fastparse
8+
api libs.scala.typelevel.cats.core
99

1010
testImplementation project(':okapi-testing')
1111
}

morpheus-examples/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ dependencies {
44
api project(':morpheus-spark-cypher')
55
api project(':morpheus-testing')
66

7-
implementation libs.log4j.core
7+
api libs.log4j.core
88

9-
implementation libs.scala.spark.graphx
10-
implementation libs.scala.spark.sql
11-
implementation(libs.scala.spark.catalyst.get())
9+
api libs.scala.spark.graphx
10+
api libs.scala.spark.sql
11+
api(libs.scala.spark.catalyst.get())
1212
.exclude(group: libs.exclusions.slf4j.log4j12.get().group, module: libs.exclusions.slf4j.log4j12.get().name)
1313

14-
implementation libs.netty.all
15-
implementation libs.h2
16-
implementation(libs.scala.upickle.get())
14+
api libs.netty.all
15+
api libs.h2
16+
api(libs.scala.upickle.get())
1717
.exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name)
1818
.exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name)
1919

20-
implementation libs.neo4j.java.driver
20+
api libs.neo4j.java.driver
2121
testImplementation libs.testcontainers.neo4j
2222
}
2323

morpheus-jmh/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'me.champeau.jmh'
22

33
description = 'Micro benchmarks for Cypher for Apache Spark'
44

5-
configurations.implementation {
5+
configurations.api {
66
exclude(
77
group: libs.exclusions.slf4j.log4j12.get().group,
88
module: libs.exclusions.slf4j.log4j12.get().name
@@ -12,9 +12,9 @@ configurations.implementation {
1212
dependencies {
1313
api project(':morpheus-spark-cypher')
1414

15-
implementation libs.scala.spark.core
16-
implementation libs.scala.spark.sql
17-
implementation libs.scala.spark.catalyst
15+
api libs.scala.spark.core
16+
api libs.scala.spark.sql
17+
api libs.scala.spark.catalyst
1818
}
1919

2020
jmh {

morpheus-spark-cypher/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if (project.hasProperty('testOkapiShade')) {
1313
}
1414
}
1515
dependencies {
16-
implementation group: 'org.opencypher', name: 'okapi-shade', version: ver.self
16+
api group: 'org.opencypher', name: 'okapi-shade', version: ver.self
1717
}
1818
}
1919

@@ -22,12 +22,12 @@ dependencies {
2222
api project(':okapi-neo4j-io')
2323
api project(':graph-ddl')
2424

25-
implementation(libs.scala.upickle.get())
25+
api(libs.scala.upickle.get())
2626
.exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name)
2727
.exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name)
2828

29-
implementation libs.scala.typelevel.cats.core
30-
implementation libs.neo4j.java.driver
29+
api libs.scala.typelevel.cats.core
30+
api libs.neo4j.java.driver
3131

3232
compileOnly libs.scala.spark.core
3333
compileOnly libs.scala.spark.sql

morpheus-testing/build.gradle

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ dependencies {
55
api project(':okapi-testing')
66
api project(':okapi-neo4j-io-testing')
77

8-
implementation libs.scala.spark.core
9-
implementation libs.scala.spark.sql
10-
implementation libs.scala.spark.hive
11-
implementation libs.hadoop.client.minicluster
8+
api libs.scala.spark.core
9+
api libs.scala.spark.sql
10+
api libs.scala.spark.hive
11+
api libs.hadoop.client.minicluster
1212

13-
implementation libs.testing.scala.scalatest
14-
implementation libs.testing.mockito.all
13+
api libs.testing.scala.scalatest
14+
api libs.testing.mockito.all
1515

1616
testImplementation project(':okapi-api').sourceSets.test.output
1717

1818
testImplementation libs.h2
1919
testImplementation libs.scala.claimant
20-
implementation(libs.scala.upickle.get())
20+
api(libs.scala.upickle.get())
2121
.exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name)
2222
.exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name)
2323

okapi-api/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ description = 'Okapi - openCypher API'
33
dependencies {
44
api project(':okapi-trees')
55

6-
implementation(libs.opencypher.frontend.get()).exclude(
6+
api(libs.opencypher.frontend.get()).exclude(
77
group: libs.testing.scala.scalacheck.get().group,
88
module: libs.testing.scala.scalacheck.get().name
99
)
1010

11-
implementation libs.scala.typelevel.cats.core
12-
implementation(libs.scala.upickle.get())
11+
api libs.scala.typelevel.cats.core
12+
api(libs.scala.upickle.get())
1313
.exclude(group: libs.exclusions.utest.get().group, module: libs.exclusions.utest.get().name)
1414
.exclude(group: libs.exclusions.acyclic.get().group, module: libs.exclusions.acyclic.get().name)
1515

16-
implementation libs.scala.fastparse
16+
api libs.scala.fastparse
1717

1818
testImplementation libs.scala.typelevel.discipline
1919
testImplementation libs.scala.typelevel.cats.laws

okapi-ir/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ description = 'Okapi IR - Declarative representation of Cypher queries'
33
dependencies {
44
api project(':okapi-api')
55

6-
implementation libs.opencypher.expressions
7-
implementation libs.opencypher.ast
8-
implementation libs.opencypher.rewriting
9-
implementation libs.opencypher.frontend
10-
implementation libs.scala.eff
6+
api libs.opencypher.expressions
7+
api libs.opencypher.ast
8+
api libs.opencypher.rewriting
9+
api libs.opencypher.frontend
10+
api libs.scala.eff
1111

1212
testImplementation project(':okapi-testing')
1313

okapi-logical/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description = 'Okapi Logical - Logical representation of Cypher queries'
33
dependencies {
44
api project(':okapi-ir')
55

6-
implementation libs.opencypher.expressions
6+
api libs.opencypher.expressions
77

88
testImplementation project(':okapi-testing')
99
testImplementation libs.opencypher.frontend

0 commit comments

Comments
 (0)