circe-checksum, cpu-affinity and native-io contain invalid maven metadata in pom.xml for packaging
- Dominant language
- Java
- Stars
- 2k
- Forks
- 976
- Avg merge
- 6d 15h
- Merged PRs (30d)
- 7
Description
**BUG REPORT**
***Describe the bug***
circe-checksum, cpu-affinity and native-io contain invalid maven metadata in pom.xml for packaging.
This has an impact on Gradle builds. For example when using the Shadow plugin in Gradle, it won't properly locate the dependencies.
***To Reproduce***
Steps to reproduce the behavior:
1. Go to https://repo1.maven.org/maven2/org/apache/bookkeeper/circe-checksum/4.15.1/circe-checksum-4.15.1.pom
2. You can see that `nar` is present.
***Expected behavior***
jar should be the default type for public libraries. nar is an exceptional case.
***Workaround for Gradle builds***
Placing this in `build.gradle` resolves the issue
```
// Workaround for invalid metadata for Bookkeeper dependencies which contain nar in pom.xml
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.apache.bookkeeper' &&
details.requested.name in ['circe-checksum', 'cpu-affinity', 'native-io']) {
details.artifactSelection { ArtifactSelectionDetails asDetails ->
asDetails.selectArtifact('jar', null, null)
}
}
}
}
```
or `build.gradle.kts`
```kotlin
configurations {
all {
resolutionStrategy {
eachDependency {
if (requested.group == "org.apache.bookkeeper" &&
requested.name in listOf("circe-checksum", "cpu-affinity", "native-io")
) {
// Workaround for invalid metadata for Bookkeeper dependencies which contain
// nar in pom.xml
artifactSelection {
selectArtifact("jar", null, null)
}
}
}
}
}
```
(in a [sample build](https://github.com/lhotari/sample-pulsar-gradle/blob/c176d211aafb0d4118d3bf6e53e2b77fcbd16721/build.gradle#L27-L37))
***Additional context***
Here's a sample error message that results of the invalid pom.xml metadata for an application that uses pulsar-client-original dependency and uses Shadow plugin to build a fat jar file:
```
[2022-09-30 10:31:57,947] [pulsar-client-io-1-1] [org.apache.pulsar.client.impl.ProducerImpl] WARN [test] [standalone-0-11] error while create opSendMsg by batch message container
java.lang.NoClassDefFoundError: com/scurrilous/circe/checksum/Crc32cIntChecksum
at org.apache.pulsar.common.protocol.Commands.serializeCommandSendWithSize(Commands.java:1519) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.common.protocol.Commands.newSend(Commands.java:540) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.common.protocol.Commands.newSend(Commands.java:507) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.client.impl.ProducerImpl.sendMessage(ProducerImpl.java:771) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.client.impl.BatchMessageContainerImpl.createOpSendMsg(BatchMessageContainerImpl.java:200) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.client.impl.ProducerImpl.batchMessageAndSend(ProducerImpl.java:2002) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.client.impl.ProducerImpl.lambda$connectionOpened$14(ProducerImpl.java:1631) ~[sample-pulsar-gradle-all.jar:?]
at org.apache.pulsar.common.util.Runnables$CatchingAndLoggingRunnable.run(Runnables.java:54) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:176) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:394) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[sample-pulsar-gradle-all.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[sample-pulsar-gradle-all.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: com.scurrilous.circe.checksum.Crc32cIntChecksum
... 18 more
```
Contributor guide
Assessment
This issue has not been assessed yet.