This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch support-ivy-as-component-source
in repository https://gitbox.apache.org/repos/asf/ant-antlibs-cyclonedx.git

commit 82d209320ec14679b649047ca8bc04c592de82cb
Author: Stefan Bodewig <[email protected]>
AuthorDate: Sun Aug 16 12:56:06 2026 +0200

    add license external references from Ivy modules
---
 example/ant-cyclonedx-0.2alpha.cdx.diff            | 196 +++++++++++++--------
 example/ant-cyclonedx-0.2alpha.cdx.json            |  32 ++--
 example/ant-cyclonedx-0.2alpha.ivy.cdx.json        | 100 +++++++++--
 .../ant/cyclonedx/IvyModuleComponentResolver.java  |  14 ++
 4 files changed, 238 insertions(+), 104 deletions(-)

diff --git a/example/ant-cyclonedx-0.2alpha.cdx.diff 
b/example/ant-cyclonedx-0.2alpha.cdx.diff
index a20a143..735bb7e 100644
--- a/example/ant-cyclonedx-0.2alpha.cdx.diff
+++ b/example/ant-cyclonedx-0.2alpha.cdx.diff
@@ -1,6 +1,6 @@
---- ant-cyclonedx-0.2alpha.cdx.json    2026-08-16 09:31:45.900940846 +0200
-+++ ant-cyclonedx-0.2alpha.ivy.cdx.json        2026-08-16 09:31:48.698014904 
+0200
-@@ -253,36 +253,64 @@
+--- ant-cyclonedx-0.2alpha.cdx.json    2026-08-16 12:54:15.035134147 +0200
++++ ant-cyclonedx-0.2alpha.ivy.cdx.json        2026-08-16 12:54:22.467055136 
+0200
+@@ -253,36 +253,68 @@
    "components" : [
      {
        "type" : "library",
@@ -65,11 +65,14 @@
          {
 -          "type" : "vcs",
 -          "url" : 
"https://github.com/wrandelshofer/FastDoubleParser/tree/master";
--        },
--        {
-           "type" : "website",
--          "url" : "https://github.com/wrandelshofer/FastDoubleParser";
++          "type" : "website",
 +          "url" : "https://github.com/ethlo/itu";
+         },
+         {
+-          "type" : "website",
+-          "url" : "https://github.com/wrandelshofer/FastDoubleParser";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -80,7 +83,7 @@
        "group" : "com.fasterxml.jackson.core",
        "name" : "jackson-annotations",
        "version" : "2.22",
-@@ -324,38 +352,22 @@
+@@ -324,38 +356,26 @@
        "licenses" : [
          {
            "license" : {
@@ -103,14 +106,16 @@
 -        {
            "type" : "website",
            "url" : "https://github.com/FasterXML/jackson";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.22/jackson-annotations-2.22-sbom-cyclonedx.json";
 -        },
 -        {
 -          "type" : "distribution-intake",
 -          "url" : "https://central.sonatype.com/api/v1/publisher";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -121,7 +126,7 @@
        "group" : "com.fasterxml.jackson.core",
        "name" : "jackson-core",
        "version" : "2.22.1",
-@@ -397,38 +409,22 @@
+@@ -397,38 +417,26 @@
        "licenses" : [
          {
            "license" : {
@@ -144,14 +149,16 @@
 -        {
            "type" : "website",
            "url" : "https://github.com/FasterXML/jackson-core";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.22.1/jackson-core-2.22.1-sbom-cyclonedx.json";
 -        },
 -        {
 -          "type" : "distribution-intake",
 -          "url" : "https://central.sonatype.com/api/v1/publisher";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -162,7 +169,7 @@
        "group" : "com.fasterxml.jackson.core",
        "name" : "jackson-databind",
        "version" : "2.22.1",
-@@ -470,38 +466,22 @@
+@@ -470,38 +478,26 @@
        "licenses" : [
          {
            "license" : {
@@ -185,14 +192,16 @@
 -        {
            "type" : "website",
            "url" : "https://github.com/FasterXML/jackson";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.22.1/jackson-databind-2.22.1-sbom-cyclonedx.json";
 -        },
 -        {
 -          "type" : "distribution-intake",
 -          "url" : "https://central.sonatype.com/api/v1/publisher";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -203,7 +212,7 @@
        "group" : "com.fasterxml.jackson.dataformat",
        "name" : "jackson-dataformat-xml",
        "version" : "2.22.1",
-@@ -543,31 +523,73 @@
+@@ -543,31 +539,81 @@
        "licenses" : [
          {
            "license" : {
@@ -220,6 +229,12 @@
 -          "url" : "http://github.com/FasterXML/jackson-dataformat-xml";
 +          "type" : "website",
 +          "url" : "https://github.com/FasterXML/jackson-dataformat-xml";
+         },
+         {
+-          "type" : "issue-tracker",
+-          "url" : "https://github.com/FasterXML/jackson-dataformat-xml/issues";
++          "type" : "license",
++          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
 +        }
 +      ]
 +    },
@@ -236,38 +251,34 @@
 +          "content" : "8348dc064a58fb2ae67371764b634812"
          },
          {
--          "type" : "issue-tracker",
--          "url" : "https://github.com/FasterXML/jackson-dataformat-xml/issues";
-+          "alg" : "SHA-1",
-+          "content" : "af5fde2414e4a8d2617e7890f7068c26b5b66a33"
-         },
-         {
 -          "type" : "website",
 -          "url" : "https://github.com/FasterXML/jackson-dataformat-xml";
++          "alg" : "SHA-1",
++          "content" : "af5fde2414e4a8d2617e7890f7068c26b5b66a33"
++        },
++        {
 +          "alg" : "SHA-256",
 +          "content" : 
"cc3a0e540791a9a1cbcd7584767b84572ffda0b72823856558f47dea69ae8ed1"
-         },
-         {
--          "type" : "bom",
--          "url" : 
"https://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.22.1/jackson-dataformat-xml-2.22.1-sbom-cyclonedx.json";
++        },
++        {
 +          "alg" : "SHA-512",
 +          "content" : 
"12398c493aa3b54716813a6297b72104fa52ab324bae54512e41a1285ac756fcbb800084c088f8e9d3aceae2e698ca164bc547421d5fe2fb62ed2dadf1d3d000"
 +        },
 +        {
 +          "alg" : "SHA3-256",
 +          "content" : 
"2d33856e0e0aa27571950d57227a66ab78f22c5cecf7c07afc3ad4dbe3b4b4ae"
-         },
-         {
--          "type" : "distribution-intake",
--          "url" : "https://central.sonatype.com/api/v1/publisher";
++        },
++        {
 +          "alg" : "SHA3-512",
 +          "content" : 
"47bdf965089a1949286216aed3b286d8990a3b9169dacb15f0a6f36df07ee397d0ecbcc1294228479068cdbff4b1d8a11718ad5efa744952c34eb092e62cf644"
 +        },
 +        {
 +          "alg" : "SHA-384",
 +          "content" : 
"2f20d92e2fc1932406055a055e0602c9d0a96d7c19b75aeb7dca7c19b30e65bd126677a9bb855ef493be8f4be1feaf62"
-+        },
-+        {
+         },
+         {
+-          "type" : "bom",
+-          "url" : 
"https://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.22.1/jackson-dataformat-xml-2.22.1-sbom-cyclonedx.json";
 +          "alg" : "SHA3-384",
 +          "content" : 
"e0bc342c2bcd8d91b674657a28e0a762d68232729d7a53d0c04ba63807a1f6bc458bfb64c422408f0cb701ce753ff7cd"
 +        }
@@ -285,10 +296,16 @@
 +        {
 +          "type" : "website",
 +          "url" : "https://github.com/FasterXML/jackson-dataformats-text";
+         },
+         {
+-          "type" : "distribution-intake",
+-          "url" : "https://central.sonatype.com/api/v1/publisher";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
-@@ -616,11 +638,17 @@
+@@ -616,11 +662,21 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -303,12 +320,16 @@
 +        {
 +          "type" : "website",
 +          "url" : "https://github.com/FasterXML/woodstox";
++        },
++        {
++          "type" : "license",
++          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
 +        }
 +      ]
      },
      {
        "type" : "library",
-@@ -628,7 +656,7 @@
+@@ -628,7 +684,7 @@
        "group" : "com.github.package-url",
        "name" : "packageurl-java",
        "version" : "1.5.0",
@@ -317,7 +338,7 @@
        "hashes" : [
          {
            "alg" : "MD5",
-@@ -671,97 +699,11 @@
+@@ -671,97 +727,15 @@
            }
          }
        ],
@@ -410,14 +431,17 @@
 -      ],
 -      "purl" : "pkg:maven/com.jcraft/[email protected]?type=jar",
 -      "externalReferences" : [
--        {
++          "url" : "https://github.com/package-url/packageurl-java";
++        },
+         {
 -          "type" : "website",
 -          "url" : "http://www.jcraft.com/";
-+          "url" : "https://github.com/package-url/packageurl-java";
++          "type" : "license",
++          "url" : "https://opensource.org/licenses/MIT";
          }
        ]
      },
-@@ -810,16 +752,21 @@
+@@ -810,16 +784,25 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -432,6 +456,10 @@
 +        {
 +          "type" : "website",
 +          "url" : "https://github.com/networknt/json-schema-validator";
++        },
++        {
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0";
 +        }
 +      ]
      },
@@ -442,7 +470,7 @@
        "group" : "commons-codec",
        "name" : "commons-codec",
        "version" : "1.22.1",
-@@ -862,46 +809,21 @@
+@@ -862,46 +845,25 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -464,8 +492,8 @@
 -        {
            "type" : "website",
            "url" : "https://commons.apache.org/proper/commons-codec/";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/commons-codec/commons-codec/1.22.1/commons-codec-1.22.1-cyclonedx.json";
 -        },
@@ -480,6 +508,8 @@
 -        {
 -          "type" : "build-system",
 -          "url" : "https://github.com/apache/commons-codec/actions";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -490,7 +520,7 @@
        "group" : "commons-io",
        "name" : "commons-io",
        "version" : "2.22.0",
-@@ -944,39 +866,15 @@
+@@ -944,39 +906,19 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -512,8 +542,8 @@
 -        {
            "type" : "website",
            "url" : "https://commons.apache.org/proper/commons-io/";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/commons-io/commons-io/2.22.0/commons-io-2.22.0-cyclonedx.json";
 -        },
@@ -528,10 +558,12 @@
 -        {
 -          "type" : "build-system",
 -          "url" : "https://github.com/apache/commons-io/actions";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
-@@ -993,6 +891,40 @@
+@@ -993,6 +935,40 @@
        "group" : "org.apache.ant",
        "name" : "ant-launcher",
        "version" : "1.10.17",
@@ -572,7 +604,7 @@
        "licenses" : [
          {
            "license" : {
-@@ -1066,6 +998,40 @@
+@@ -1066,6 +1042,40 @@
        "group" : "org.apache.ant",
        "name" : "ant",
        "version" : "1.10.17",
@@ -613,7 +645,7 @@
        "licenses" : [
          {
            "license" : {
-@@ -1128,24 +1094,7 @@
+@@ -1128,24 +1138,7 @@
      },
      {
        "type" : "library",
@@ -638,7 +670,7 @@
        "group" : "org.apache.commons",
        "name" : "commons-collections4",
        "version" : "4.5.0",
-@@ -1188,62 +1137,21 @@
+@@ -1188,62 +1181,25 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -660,8 +692,8 @@
 -        {
            "type" : "website",
            "url" : "https://commons.apache.org/proper/commons-collections/";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/org/apache/commons/commons-collections4/4.5.0/commons-collections4-4.5.0-cyclonedx.json";
 -        },
@@ -676,6 +708,8 @@
 -        {
 -          "type" : "build-system",
 -          "url" : "https://github.com/apache/commons-parent/actions";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -702,7 +736,7 @@
        "group" : "org.apache.commons",
        "name" : "commons-lang3",
        "version" : "3.20.0",
-@@ -1286,77 +1194,22 @@
+@@ -1286,77 +1242,26 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -724,8 +758,8 @@
 -        {
            "type" : "website",
            "url" : "https://commons.apache.org/proper/commons-lang/";
--        },
--        {
+         },
+         {
 -          "type" : "bom",
 -          "url" : 
"https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.20.0/commons-lang3-3.20.0-cyclonedx.json";
 -        },
@@ -740,6 +774,8 @@
 -        {
 -          "type" : "build-system",
 -          "url" : "https://github.com/apache/commons-lang/actions";
++          "type" : "license",
++          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          }
        ]
      },
@@ -782,7 +818,7 @@
        "supplier" : {
          "name" : "Apache Ant Project Management Committee",
          "url" : [
-@@ -1428,17 +1281,13 @@
+@@ -1428,17 +1333,13 @@
          },
          {
            "type" : "website",
@@ -801,7 +837,7 @@
            "type" : "mailing-list",
            "url" : "https://ant.apache.org/ivy/mailing-lists.html";
          },
-@@ -1455,46 +1304,14 @@
+@@ -1455,46 +1356,14 @@
            "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
          },
          {
@@ -852,7 +888,7 @@
      },
      {
        "type" : "library",
-@@ -1545,12 +1362,17 @@
+@@ -1545,12 +1414,21 @@
            }
          }
        ],
@@ -862,6 +898,10 @@
 +        {
 +          "type" : "website",
 +          "url" : "http://github.com/FasterXML/stax2-api";
++        },
++        {
++          "type" : "license",
++          "url" : "http://www.opensource.org/licenses/bsd-license.php";
 +        }
 +      ]
      },
@@ -872,7 +912,7 @@
        "group" : "org.cyclonedx",
        "name" : "cyclonedx-core-java",
        "version" : "13.1.0",
-@@ -1593,61 +1415,145 @@
+@@ -1593,61 +1471,157 @@
          {
            "license" : {
              "id" : "Apache-2.0",
@@ -888,6 +928,12 @@
 -          "url" : "https://github.com/CycloneDX/cyclonedx-core-java.git";
 +          "type" : "website",
 +          "url" : "https://github.com/CycloneDX/cyclonedx-core-java";
+         },
+         {
+-          "type" : "issue-tracker",
+-          "url" : "https://github.com/CycloneDX/cyclonedx-core-java/issues";
++          "type" : "license",
++          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
 +        }
 +      ]
 +    },
@@ -904,14 +950,12 @@
 +          "content" : "b6480d114a23683498ac3f746f959d2f"
          },
          {
--          "type" : "issue-tracker",
--          "url" : "https://github.com/CycloneDX/cyclonedx-core-java/issues";
-+          "alg" : "SHA-1",
-+          "content" : "d9e58ac9c7779ba3bf8142aff6c830617a7fe60f"
-         },
-         {
 -          "type" : "website",
 -          "url" : "https://github.com/CycloneDX/cyclonedx-core-java";
++          "alg" : "SHA-1",
++          "content" : "d9e58ac9c7779ba3bf8142aff6c830617a7fe60f"
++        },
++        {
 +          "alg" : "SHA-256",
 +          "content" : 
"7b751d952061954d5abfed7181c1f645d336091b679891591d63329c622eb832"
          },
@@ -924,10 +968,8 @@
 +        {
 +          "alg" : "SHA3-256",
 +          "content" : 
"00559b4f4066b4917ba4fe2a6f23111eaeada321112d030910d218ced9084b5e"
-         },
-         {
--          "type" : "build-system",
--          "url" : "https://github.com/CycloneDX/cyclonedx-core-java/actions";
++        },
++        {
 +          "alg" : "SHA3-512",
 +          "content" : 
"9579c2f7e7516e177c2d493ccc9eb8150978cf19f6f09b28d116f6935239fd56dc6af2b62b3336f79b0b462445550cd1fb5377a07001a6f44aaab6a32fa2fa47"
 +        },
@@ -953,6 +995,12 @@
 +        {
 +          "type" : "website",
 +          "url" : "http://www.slf4j.org";
+         },
+         {
+-          "type" : "build-system",
+-          "url" : "https://github.com/CycloneDX/cyclonedx-core-java/actions";
++          "type" : "license",
++          "url" : "https://opensource.org/license/mit";
          }
        ]
      },
@@ -1016,6 +1064,10 @@
 +        {
 +          "type" : "website",
 +          "url" : "https://bitbucket.org/snakeyaml/snakeyaml";
++        },
++        {
++          "type" : "license",
++          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
 +        }
 +      ]
      }
@@ -1038,7 +1090,7 @@
      },
      {
        "ref" : 
"pkg:maven/com.fasterxml.jackson.core/[email protected]?type=jar",
-@@ -1667,10 +1573,33 @@
+@@ -1667,10 +1641,33 @@
        ]
      },
      {
@@ -1072,7 +1124,7 @@
        "ref" : "pkg:maven/commons-codec/[email protected]?type=jar",
        "dependsOn" : [ ]
      },
-@@ -1700,9 +1629,7 @@
+@@ -1700,9 +1697,7 @@
      },
      {
        "ref" : 
"pkg:maven/org.apache.commons/[email protected]?type=jar",
@@ -1083,7 +1135,7 @@
      },
      {
        "ref" : "pkg:maven/org.apache.commons/[email protected]?type=jar",
-@@ -1710,20 +1637,7 @@
+@@ -1710,20 +1705,7 @@
      },
      {
        "ref" : "pkg:maven/org.apache.ivy/[email protected]?type=jar",
@@ -1105,7 +1157,7 @@
      },
      {
        "ref" : "pkg:maven/org.codehaus.woodstox/[email protected]?type=jar",
-@@ -1740,6 +1654,14 @@
+@@ -1740,6 +1722,14 @@
          "pkg:maven/org.apache.commons/[email protected]?type=jar",
          "pkg:maven/org.apache.commons/[email protected]?type=jar"
        ]
diff --git a/example/ant-cyclonedx-0.2alpha.cdx.json 
b/example/ant-cyclonedx-0.2alpha.cdx.json
index 2721abd..1c7407b 100644
--- a/example/ant-cyclonedx-0.2alpha.cdx.json
+++ b/example/ant-cyclonedx-0.2alpha.cdx.json
@@ -34,35 +34,35 @@
           "hashes" : [
             {
               "alg" : "MD5",
-              "content" : "71770c472761cc38b8c5a806e43b2f2b"
+              "content" : "de73b2090ed784264d7cdf6b94c40b9f"
             },
             {
               "alg" : "SHA-1",
-              "content" : "f499b359a70f4d3caef8a58caf0368864979faee"
+              "content" : "117736e22f1f27217eaf9068b1007fddedef5f8f"
             },
             {
               "alg" : "SHA-256",
-              "content" : 
"a16f9ff5f6bec113cc015a5fc9686e136a669bca0e08622e33cfa28d58650685"
+              "content" : 
"aed1a008c3ebdbb2908d7dbacebbc1d8d489d08ebba0910217f239412ab36b04"
             },
             {
               "alg" : "SHA-512",
-              "content" : 
"c73ef24ab6b67b7246c739b0db08df971a78dcd87d79bef26090198b0a814a7c7c73c0eef7a997492ca7ad01631d4a06747a15656d34e1437644c1c23be6506b"
+              "content" : 
"add20643bd0e106b27c7200863bf376ea28ee95cd42697820024b2eff5c5bdacc4be0bbbe1138ca8ac35e209df80ce30bd27e1a5eb32d1ae528234936f4ea0ca"
             },
             {
               "alg" : "SHA3-256",
-              "content" : 
"fb8d181de36e4cfad983f3aec0415a7b9ef430e6236318c922bf45fc5277900b"
+              "content" : 
"192621053a51c43cc73078977487e42ec5b6597c5e95119ba86a283b1aca4470"
             },
             {
               "alg" : "SHA3-512",
-              "content" : 
"3061e7c468516f2f99dd836ac187993b9fdefb8cd445ed41681eff8fa0187fff2714b899aa463317ddf4076e5decb8267911a12eb9725b0f5de4e2bf10674f32"
+              "content" : 
"11159291538dd1d7fec1de2214579732e76a1233acbff6887ead1b7520bdf784f47f0f6af1ca66f0096ddbbbf7470febd77369260653781ee4ed1b3a6d465c20"
             },
             {
               "alg" : "SHA-384",
-              "content" : 
"3b6a8c38a46aab82b94c9a964721118a6708e2df1f15aa95612494abf4460dd394bfb5863193dcde0cadcdde2bef2ea9"
+              "content" : 
"c65ed1eb81aa20245bab2173bcab863663dec015f220bc5c5353a0d099e71013f85537a41e8fb673dba35f8bf9ada61d"
             },
             {
               "alg" : "SHA3-384",
-              "content" : 
"6365ab09b437b6563b3653a75f69a48a41b994bd52eff07d1818b539adedcf987a2989821af8a2cea10310858edccaa5"
+              "content" : 
"031ca0350bcb44f06f57160d0d9bba747f37a403a58b54938758daf84f2b34f07201a6a69052ee8bbbfb15f6df0dec3b"
             }
           ],
           "licenses" : [
@@ -146,35 +146,35 @@
       "hashes" : [
         {
           "alg" : "MD5",
-          "content" : "71770c472761cc38b8c5a806e43b2f2b"
+          "content" : "de73b2090ed784264d7cdf6b94c40b9f"
         },
         {
           "alg" : "SHA-1",
-          "content" : "f499b359a70f4d3caef8a58caf0368864979faee"
+          "content" : "117736e22f1f27217eaf9068b1007fddedef5f8f"
         },
         {
           "alg" : "SHA-256",
-          "content" : 
"a16f9ff5f6bec113cc015a5fc9686e136a669bca0e08622e33cfa28d58650685"
+          "content" : 
"aed1a008c3ebdbb2908d7dbacebbc1d8d489d08ebba0910217f239412ab36b04"
         },
         {
           "alg" : "SHA-512",
-          "content" : 
"c73ef24ab6b67b7246c739b0db08df971a78dcd87d79bef26090198b0a814a7c7c73c0eef7a997492ca7ad01631d4a06747a15656d34e1437644c1c23be6506b"
+          "content" : 
"add20643bd0e106b27c7200863bf376ea28ee95cd42697820024b2eff5c5bdacc4be0bbbe1138ca8ac35e209df80ce30bd27e1a5eb32d1ae528234936f4ea0ca"
         },
         {
           "alg" : "SHA3-256",
-          "content" : 
"fb8d181de36e4cfad983f3aec0415a7b9ef430e6236318c922bf45fc5277900b"
+          "content" : 
"192621053a51c43cc73078977487e42ec5b6597c5e95119ba86a283b1aca4470"
         },
         {
           "alg" : "SHA3-512",
-          "content" : 
"3061e7c468516f2f99dd836ac187993b9fdefb8cd445ed41681eff8fa0187fff2714b899aa463317ddf4076e5decb8267911a12eb9725b0f5de4e2bf10674f32"
+          "content" : 
"11159291538dd1d7fec1de2214579732e76a1233acbff6887ead1b7520bdf784f47f0f6af1ca66f0096ddbbbf7470febd77369260653781ee4ed1b3a6d465c20"
         },
         {
           "alg" : "SHA-384",
-          "content" : 
"3b6a8c38a46aab82b94c9a964721118a6708e2df1f15aa95612494abf4460dd394bfb5863193dcde0cadcdde2bef2ea9"
+          "content" : 
"c65ed1eb81aa20245bab2173bcab863663dec015f220bc5c5353a0d099e71013f85537a41e8fb673dba35f8bf9ada61d"
         },
         {
           "alg" : "SHA3-384",
-          "content" : 
"6365ab09b437b6563b3653a75f69a48a41b994bd52eff07d1818b539adedcf987a2989821af8a2cea10310858edccaa5"
+          "content" : 
"031ca0350bcb44f06f57160d0d9bba747f37a403a58b54938758daf84f2b34f07201a6a69052ee8bbbfb15f6df0dec3b"
         }
       ],
       "licenses" : [
diff --git a/example/ant-cyclonedx-0.2alpha.ivy.cdx.json 
b/example/ant-cyclonedx-0.2alpha.ivy.cdx.json
index c33ede7..667d8e0 100644
--- a/example/ant-cyclonedx-0.2alpha.ivy.cdx.json
+++ b/example/ant-cyclonedx-0.2alpha.ivy.cdx.json
@@ -34,35 +34,35 @@
           "hashes" : [
             {
               "alg" : "MD5",
-              "content" : "71770c472761cc38b8c5a806e43b2f2b"
+              "content" : "de73b2090ed784264d7cdf6b94c40b9f"
             },
             {
               "alg" : "SHA-1",
-              "content" : "f499b359a70f4d3caef8a58caf0368864979faee"
+              "content" : "117736e22f1f27217eaf9068b1007fddedef5f8f"
             },
             {
               "alg" : "SHA-256",
-              "content" : 
"a16f9ff5f6bec113cc015a5fc9686e136a669bca0e08622e33cfa28d58650685"
+              "content" : 
"aed1a008c3ebdbb2908d7dbacebbc1d8d489d08ebba0910217f239412ab36b04"
             },
             {
               "alg" : "SHA-512",
-              "content" : 
"c73ef24ab6b67b7246c739b0db08df971a78dcd87d79bef26090198b0a814a7c7c73c0eef7a997492ca7ad01631d4a06747a15656d34e1437644c1c23be6506b"
+              "content" : 
"add20643bd0e106b27c7200863bf376ea28ee95cd42697820024b2eff5c5bdacc4be0bbbe1138ca8ac35e209df80ce30bd27e1a5eb32d1ae528234936f4ea0ca"
             },
             {
               "alg" : "SHA3-256",
-              "content" : 
"fb8d181de36e4cfad983f3aec0415a7b9ef430e6236318c922bf45fc5277900b"
+              "content" : 
"192621053a51c43cc73078977487e42ec5b6597c5e95119ba86a283b1aca4470"
             },
             {
               "alg" : "SHA3-512",
-              "content" : 
"3061e7c468516f2f99dd836ac187993b9fdefb8cd445ed41681eff8fa0187fff2714b899aa463317ddf4076e5decb8267911a12eb9725b0f5de4e2bf10674f32"
+              "content" : 
"11159291538dd1d7fec1de2214579732e76a1233acbff6887ead1b7520bdf784f47f0f6af1ca66f0096ddbbbf7470febd77369260653781ee4ed1b3a6d465c20"
             },
             {
               "alg" : "SHA-384",
-              "content" : 
"3b6a8c38a46aab82b94c9a964721118a6708e2df1f15aa95612494abf4460dd394bfb5863193dcde0cadcdde2bef2ea9"
+              "content" : 
"c65ed1eb81aa20245bab2173bcab863663dec015f220bc5c5353a0d099e71013f85537a41e8fb673dba35f8bf9ada61d"
             },
             {
               "alg" : "SHA3-384",
-              "content" : 
"6365ab09b437b6563b3653a75f69a48a41b994bd52eff07d1818b539adedcf987a2989821af8a2cea10310858edccaa5"
+              "content" : 
"031ca0350bcb44f06f57160d0d9bba747f37a403a58b54938758daf84f2b34f07201a6a69052ee8bbbfb15f6df0dec3b"
             }
           ],
           "licenses" : [
@@ -146,35 +146,35 @@
       "hashes" : [
         {
           "alg" : "MD5",
-          "content" : "71770c472761cc38b8c5a806e43b2f2b"
+          "content" : "de73b2090ed784264d7cdf6b94c40b9f"
         },
         {
           "alg" : "SHA-1",
-          "content" : "f499b359a70f4d3caef8a58caf0368864979faee"
+          "content" : "117736e22f1f27217eaf9068b1007fddedef5f8f"
         },
         {
           "alg" : "SHA-256",
-          "content" : 
"a16f9ff5f6bec113cc015a5fc9686e136a669bca0e08622e33cfa28d58650685"
+          "content" : 
"aed1a008c3ebdbb2908d7dbacebbc1d8d489d08ebba0910217f239412ab36b04"
         },
         {
           "alg" : "SHA-512",
-          "content" : 
"c73ef24ab6b67b7246c739b0db08df971a78dcd87d79bef26090198b0a814a7c7c73c0eef7a997492ca7ad01631d4a06747a15656d34e1437644c1c23be6506b"
+          "content" : 
"add20643bd0e106b27c7200863bf376ea28ee95cd42697820024b2eff5c5bdacc4be0bbbe1138ca8ac35e209df80ce30bd27e1a5eb32d1ae528234936f4ea0ca"
         },
         {
           "alg" : "SHA3-256",
-          "content" : 
"fb8d181de36e4cfad983f3aec0415a7b9ef430e6236318c922bf45fc5277900b"
+          "content" : 
"192621053a51c43cc73078977487e42ec5b6597c5e95119ba86a283b1aca4470"
         },
         {
           "alg" : "SHA3-512",
-          "content" : 
"3061e7c468516f2f99dd836ac187993b9fdefb8cd445ed41681eff8fa0187fff2714b899aa463317ddf4076e5decb8267911a12eb9725b0f5de4e2bf10674f32"
+          "content" : 
"11159291538dd1d7fec1de2214579732e76a1233acbff6887ead1b7520bdf784f47f0f6af1ca66f0096ddbbbf7470febd77369260653781ee4ed1b3a6d465c20"
         },
         {
           "alg" : "SHA-384",
-          "content" : 
"3b6a8c38a46aab82b94c9a964721118a6708e2df1f15aa95612494abf4460dd394bfb5863193dcde0cadcdde2bef2ea9"
+          "content" : 
"c65ed1eb81aa20245bab2173bcab863663dec015f220bc5c5353a0d099e71013f85537a41e8fb673dba35f8bf9ada61d"
         },
         {
           "alg" : "SHA3-384",
-          "content" : 
"6365ab09b437b6563b3653a75f69a48a41b994bd52eff07d1818b539adedcf987a2989821af8a2cea10310858edccaa5"
+          "content" : 
"031ca0350bcb44f06f57160d0d9bba747f37a403a58b54938758daf84f2b34f07201a6a69052ee8bbbfb15f6df0dec3b"
         }
       ],
       "licenses" : [
@@ -305,6 +305,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/ethlo/itu";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -362,6 +366,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/jackson";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -419,6 +427,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/jackson-core";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -476,6 +488,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/jackson";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -533,6 +549,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/jackson-dataformat-xml";
+        },
+        {
+          "type" : "license",
+          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -590,6 +610,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/jackson-dataformats-text";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -647,6 +671,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/FasterXML/woodstox";
+        },
+        {
+          "type" : "license",
+          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -704,6 +732,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/package-url/packageurl-java";
+        },
+        {
+          "type" : "license",
+          "url" : "https://opensource.org/licenses/MIT";
         }
       ]
     },
@@ -761,6 +793,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/networknt/json-schema-validator";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0";
         }
       ]
     },
@@ -818,6 +854,10 @@
         {
           "type" : "website",
           "url" : "https://commons.apache.org/proper/commons-codec/";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -875,6 +915,10 @@
         {
           "type" : "website",
           "url" : "https://commons.apache.org/proper/commons-io/";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -1146,6 +1190,10 @@
         {
           "type" : "website",
           "url" : "https://commons.apache.org/proper/commons-collections/";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -1203,6 +1251,10 @@
         {
           "type" : "website",
           "url" : "https://commons.apache.org/proper/commons-lang/";
+        },
+        {
+          "type" : "license",
+          "url" : "https://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -1367,6 +1419,10 @@
         {
           "type" : "website",
           "url" : "http://github.com/FasterXML/stax2-api";
+        },
+        {
+          "type" : "license",
+          "url" : "http://www.opensource.org/licenses/bsd-license.php";
         }
       ]
     },
@@ -1424,6 +1480,10 @@
         {
           "type" : "website",
           "url" : "https://github.com/CycloneDX/cyclonedx-core-java";
+        },
+        {
+          "type" : "license",
+          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     },
@@ -1481,6 +1541,10 @@
         {
           "type" : "website",
           "url" : "http://www.slf4j.org";
+        },
+        {
+          "type" : "license",
+          "url" : "https://opensource.org/license/mit";
         }
       ]
     },
@@ -1538,6 +1602,10 @@
         {
           "type" : "website",
           "url" : "https://bitbucket.org/snakeyaml/snakeyaml";
+        },
+        {
+          "type" : "license",
+          "url" : "http://www.apache.org/licenses/LICENSE-2.0.txt";
         }
       ]
     }
diff --git a/src/main/org/apache/ant/cyclonedx/IvyModuleComponentResolver.java 
b/src/main/org/apache/ant/cyclonedx/IvyModuleComponentResolver.java
index 87d2d34..275589e 100644
--- a/src/main/org/apache/ant/cyclonedx/IvyModuleComponentResolver.java
+++ b/src/main/org/apache/ant/cyclonedx/IvyModuleComponentResolver.java
@@ -213,9 +213,15 @@ class IvyModuleComponentResolver {
             component.setDescription(md.getDescription());
         }
 
+        String licenseUrl = null;
         if (!component.hasLicenses()) {
             License[] ivyLicenses = md.getLicenses();
             if (ivyLicenses != null) {
+
+                if (ivyLicenses.length == 1) {
+                    licenseUrl = ivyLicenses[0].getUrl();
+                }
+
                 for (License ivyLicense : ivyLicenses) {
                     org.apache.ant.cyclonedx.License license = new 
org.apache.ant.cyclonedx.License();
                     license.setName(ivyLicense.getName());
@@ -247,6 +253,14 @@ class IvyModuleComponentResolver {
             
e.setType(org.cyclonedx.model.ExternalReference.Type.WEBSITE.name());
             component.addConfiguredExternalReference(e);
         }
+
+        if (licenseUrl != null && !component.getExternalReferences().stream()
+            .anyMatch(e -> 
e.getType().equals(org.cyclonedx.model.ExternalReference.Type.LICENSE))) {
+            ExternalReference e = new ExternalReference();
+            e.setUrl(licenseUrl);
+            
e.setType(org.cyclonedx.model.ExternalReference.Type.LICENSE.name());
+            component.addConfiguredExternalReference(e);
+        }
     }
 
     private Map<ModuleRevisionId, Set<IvyNode>> 
populateDependencyTree(IvySettings settings,

Reply via email to