Ivy in CycloneDX Antlib

Stefan Bodewig <[email protected]> Sat, 01 Aug 2026 18:25:38 +0200
Newsgroups gmane.comp.jakarta.ant.devel
Message-ID <[email protected]>
Hi

by now I've achieved enough that I can show it. It is completely
undocumented, it isn't complete and I believe I don't understand Ivy
well enough (no surprise here).

https://github.com/apache/ant-antlibs-cyclonedx/pull/2

The target create-antlib-sbom-ivy creates an SBOM for the CycloneDX
Antlib using Ivy and one can compare the output to the SBOM we'd create
"the manual" way with the create-antlib-sbom target. The idea is to have
Ivy contribute as much as possible and override/augment it with stuff
the SBOM writer deems important. So I've added the ant and ant-launcher
components myself as Ivy is not able to add proper supplier information
or most of the external links. But Ivy figured out the depencency to the
components.

When comparing the two one will find differences. The "old" SBOM
contains a dependency of jackson-core on
ch.randelshofer/fastdoubleparser - which is what Jackson's SBOM
says. Actually the pom shades away the dependency and Ivy doesn't see
it. I'm not sure who's right here and tend to believe Ivy is - but here
is a difference between "my code" and the maven-cyclondedx-plugin. I've
not analyzed all differences I see.

What is completely missing is hashes for the dependencies. I haven't
spent enough time figuring out how to find the downloaded jar for an
IvyNode of the ResolveReport. If anybody else knows how to do that
faster than I can find it myself, that would be good.

The part where I don't understand Ivy is: Initially I didn't specify any
settingsId and Ivy resolved ivy.xml. After that the ResolveReport
contained AntUnit, which is a test dependency, even though I said
conf="default". Obviously ivyNode.isEvicted(conf) doesn't do what I
believed it would do. Is there an easy way to see whether a dependency
IvyNode that is part of ResolveReport is actually included in the
dependencies of a given set of configurations?

Most probably there are lots of other things that can be improved.

Stefan