Closed Zhuinden closed 2 years ago
So the reason why this happened is because 2.6.2 was still released with the install
command, however the 2.6.3 was released by Jitpack using the ./gradlew clean -Pgroup=com.github.Zhuinden -Pversion=2.6.3 -xtest -xlint assemble publishToMavenLocal
command.
Install and publishToMavenLocal work differently, namely that publishToMavenLocal
is not smart. It only appends your dependencies if you explicitly tell it to, or at least it tried appending them as compile
but that's ignored by Gradle now.
So what I did now is force add the dependencies to the POM.XML in every scope
// build a jar with source files
val sourcesJar by tasks.registering(Jar::class) {
from(android.sourceSets["main"].java.srcDirs)
archiveClassifier.set("sources")
}
val javadoc by tasks.registering(Javadoc::class) {
configurations.implementation.get().isCanBeResolved = true
configurations.api.get().isCanBeResolved = true
isFailOnError = false
source = android.sourceSets["main"].java.getSourceFiles()
classpath += project.files(android.bootClasspath.joinToString(separator = File.pathSeparator))
classpath += configurations.api
}
// build a jar with javadoc
val javadocJar by tasks.registering(Jar::class) {
dependsOn(javadoc)
archiveClassifier.set("javadoc")
from(javadoc.get().destinationDir)
}
artifacts {
archives(sourcesJar)
archives(javadocJar)
}
afterEvaluate {
publishing {
publications {
register("mavenJava", MavenPublication::class) {
groupId = "com.github.Zhuinden"
artifactId = "simple-stack"
version = "2.6.3"
from(components["release"])
artifact(sourcesJar.get())
pom.withXml {
val dependenciesNode: groovy.util.Node =
(asNode().get("dependencies") as groovy.util.NodeList).get(0) as groovy.util.Node
val configurationNames = arrayOf("implementation", "api")
configurationNames.forEach { configurationName ->
configurations[configurationName].allDependencies.forEach {
if (it.group != null && it.version != "unspecified") {
val dependencyNode = dependenciesNode.appendNode("dependency")
dependencyNode.appendNode("groupId", it.group)
dependencyNode.appendNode("artifactId", it.name)
dependencyNode.appendNode("version", it.version)
dependencyNode.appendNode("scope", configurationName)
}
}
}
}
}
}
}
}
However I did notice that javadoc
no longer gets added. 😒 I hope the sources-jar
is enough.
Eventually I removed scope
because it was still not working.
Fingers crossed that it works now with 2.6.4...
2.6.4 is released and it works.
2.6.3 no longer exists.
Maven-Publish task has been a pain in the ass, and the transitive dependencies didn't get added. This used to work previously and apparently something in Gradle changed and so now it didn't.
I'll probably have to release 2.6.4 to fix it because I see that some people have already updated, but they could run into "no class def found error" on StateBundle even though that is not intended behavior, you shouldn't need to manually add it.