Open Javaru opened 8 months ago
Hey! I've checked the project that you attached. And here what I could say:
io.spring.dependency-management
plugin in your example. As I see by using imports { mavenBom(...) }
it will enforce ALL configurations in a project to use this version (not only runtime but also created by other Gradle plugins, like Dokka).Here is a possible workaround of how to override Jackson version for Dokka, until it doesn't support latest Jackson out of the box (you need to put it near dependencyManagement
/dependencies
block):
configurations.matching { it.name.startsWith("dokka") }.configureEach {
resolutionStrategy.eachDependency {
if (requested.group.startsWith("com.fasterxml.jackson")) {
useVersion("2.15.3")
}
}
}
Hope this helps!
While we are here, could you please tell us: why do you need to publish both HTML and Javadoc artifacts produced by Dokka?
@whyoleg Thank you for the reply. Your workaround works beautifully. I did not think of doing something like that. (Likely because my Gradle skills are still those of an intermediate user and not a power user.) So thank you for gong the extra mile and providing that workaround. It is very much appreciated.
I'll leave it to your discretion if you want to close this ticket or keep it open, based on the project's needs.
could you please tell us: why do you need to publish both HTML and Javadoc artifacts produced by Dokka?
Basically it's a traditional state. We have both legacy Java project with new development done in Kotlin, and new projects that are 100% Kotlin. Our old school Java developers are just familiar with the Javadoc format after using it for anywhere form 10 to 25 years and prefer it; especially for the legacy projects that are 99% Java. But we are working on transitioning to the Dokka HTML based documentation. So for now, we publish both so folks can evaluate and/or use the Dokka HTML format while still having the traditional Javadoc format available.
Hey! I've checked the project that you attached. And here what I could say:
1. Dokka is currently built with old Jackson version because of compatibility with Gradle (more info [here](https://github.com/Kotlin/dokka/issues/3194#issuecomment-1929382630)). And looks like all Jackson versions up to 2.15.3 are compatible with version used in Dokka, but 2.16.1 is not - that's why using Dokka with Jackson 2.16.1 is not possible right now. 2. As far as I understand BOMs are managed by `io.spring.dependency-management` plugin in your example. As I see by using `imports { mavenBom(...) }` it will enforce ALL configurations in a project to use this version (not only runtime but also created by other Gradle plugins, like Dokka).
Here is a possible workaround of how to override Jackson version for Dokka, until it doesn't support latest Jackson out of the box (you need to put it near
dependencyManagement
/dependencies
block):configurations.matching { it.name.startsWith("dokka") }.configureEach { resolutionStrategy.eachDependency { if (requested.group.startsWith("com.fasterxml.jackson")) { useVersion("2.15.3") } } }
Hope this helps!
While we are here, could you please tell us: why do you need to publish both HTML and Javadoc artifacts produced by Dokka?
I tried this approach and did fixed the first exception reported by issue creator. But now I cannot run my jacocoToCobertura
task anymore, because of this exception:
> net.razvan.JacocoToCoberturaException: Loading Jacoco report error: `(was java.io.FileNotFoundException) C:\Users\<user>\.gradle\daemon\8.8\report.dtd (The system cannot find the file specified)
at [row,col {unknown-source}]: [1,124]`
I guess I somehow force the dependency version 2.15.3 to all other dependencies, not just Dokka? I'm not an expert in Gradle yet.
Any hints on this? Thanks in advance!
Describe the bug Dokka
dokkaHtml
gradle task fails when project includes Jackson BOM version 2.16.0 or higher. (Build is successful with v2.15.3 or lower). The root cause of the failure is:Caused by: java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.databind.type.TypeFactory.<init>(com.fasterxml.jackson.databind.util.LRUMap)'
Full stacktrace is below.Expected behaviour The build should be successful (and is with Jackson v2.15.3 or lower).
Screenshots Gradle build failure when run with
--stacktrace
option:To Reproduce In a project that has Jackson v2.16.0 or later BOM declared, run the
dokkaHtml
task, or a task that subsequently runs it such aspublishToMavenLocal
. I've attached a minimalist.zip gradle project that reproduces the issue. If you change the Jackson BOM to v2.15.3 or earlier, the build is successful.Dokka configuration Also see attached minimalist.zip gradle project that reproduces the issue.
Installation
Additional context None minimalist.zip example project