We want to define project and enterprise-wide module replacements to avoid conflicts due to changed coordinates, however they’re not reflected in the published metadata. Reduced case is:
apply plugin: 'java'
apply plugin: 'ivy-publish'
group = 'test'
version = '1.0'
repositories {
jcenter()
}
dependencies {
compile 'com.google.collections:google-collections:1.0'
compile 'com.google.truth:truth:0.28' // Has a guava dependency
modules {
module("com.google.collections:google-collections") {
replacedBy("com.google.guava:guava")
}
}
}
publishing {
repositories {
ivy {
url 'build/testivyrepo'
name 'testivy'
}
}
publications {
ivyPublish(IvyPublication) {
from components.java
}
}
}
Results in:
<dependencies>
<dependency org="com.google.collections" name="google-collections" rev="1.0" conf="runtime->default"/>
<dependency org="com.google.truth" name="truth" rev="0.28" conf="runtime->default"/>
</dependencies>
For:
runtime - Runtime classpath for source set 'main'.
+--- com.google.collections:google-collections:1.0 -> com.google.guava:guava:18.0
\--- com.google.truth:truth:0.28
+--- com.google.guava:guava:18.0
\--- junit:junit:4.10
\--- org.hamcrest:hamcrest-core:1.1