diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/AwsS3DeltaReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/AwsS3DeltaReaderFactory.java
index 8dc820b..d29cd40 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/AwsS3DeltaReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/AwsS3DeltaReaderFactory.java
@@ -91,7 +91,7 @@
             throws AlgebricksException, HyracksDataException {
         this.configuration = configuration;
         Configuration conf = new Configuration();
-        configurationBuilder(configuration, conf);
+        applyConfiguration(configuration, conf);
         String tableMetadataPath = S3Constants.HADOOP_S3_PROTOCOL + "://"
                 + configuration.get(ExternalDataConstants.CONTAINER_NAME_FIELD_NAME) + '/'
                 + configuration.get(ExternalDataConstants.DEFINITION_FIELD_NAME);
@@ -189,7 +189,7 @@
         partitionWorkLoadsBasedOnSize.addAll(workloadQueue);
     }
 
-    public static void configurationBuilder(Map<String, String> configuration, Configuration conf) {
+    public static void applyConfiguration(Map<String, String> configuration, Configuration conf) {
         conf.set(S3Constants.HADOOP_ACCESS_KEY_ID, configuration.get(S3Constants.ACCESS_KEY_ID_FIELD_NAME));
         conf.set(S3Constants.HADOOP_SECRET_ACCESS_KEY, configuration.get(S3Constants.SECRET_ACCESS_KEY_FIELD_NAME));
         if (configuration.get(S3Constants.SESSION_TOKEN_FIELD_NAME) != null) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index 4d093f5..540de09 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -520,11 +520,16 @@
         String tableMetadataPath = null;
         if (configuration.get(ExternalDataConstants.KEY_EXTERNAL_SOURCE_TYPE)
                 .equals(ExternalDataConstants.KEY_ADAPTER_NAME_AWS_S3)) {
-            AwsS3DeltaReaderFactory.configurationBuilder(configuration, conf);
+            AwsS3DeltaReaderFactory.applyConfiguration(configuration, conf);
             tableMetadataPath = S3Constants.HADOOP_S3_PROTOCOL + "://"
                     + configuration.get(ExternalDataConstants.CONTAINER_NAME_FIELD_NAME) + '/'
                     + configuration.get(ExternalDataConstants.DEFINITION_FIELD_NAME);
+        } else {
+            throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR,
+                    "Delta format is not supported for the external source type: "
+                            + configuration.get(ExternalDataConstants.KEY_EXTERNAL_SOURCE_TYPE));
         }
+
         Engine engine = DefaultEngine.create(conf);
         io.delta.kernel.Table table = io.delta.kernel.Table.forPath(engine, tableMetadataPath);
         try {
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index 82534fb..c64d4bb 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -250,15 +250,28 @@
             </override>
             <override>
               <gavs>
-                <gav>com.azure:azure-core:1.38.0</gav>
-                <gav>com.azure:azure-core-http-netty:1.13.2</gav>
-                <gav>com.azure:azure-json:1.0.0</gav>
-                <gav>com.azure:azure-storage-blob:12.22.0</gav>
-                <gav>com.azure:azure-storage-common:12.21.0</gav>
-                <gav>com.azure:azure-storage-internal-avro:12.7.0</gav>
+                <gav>com.azure:azure-core:1.45.1</gav>
+                <gav>com.azure:azure-core-http-netty:1.13.11</gav>
+                <gav>com.azure:azure-json:1.3.0</gav>
+                <gav>com.azure:azure-storage-blob:12.25.1</gav>
+                <gav>com.azure:azure-storage-common:12.24.1</gav>
+                <gav>com.azure:azure-storage-internal-avro:12.10.1</gav>
               </gavs>
-              <noticeUrl>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/azure-storage-blob_12.22.0/NOTICE.txt</noticeUrl>
-              <url>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/azure-storage-blob_12.22.0/LICENSE.txt</url>
+              <url>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/main/LICENSE.txt</url>
+            </override>
+            <override>
+              <gavs>
+                <gav>com.azure:azure-identity:1.13.3</gav>
+              </gavs>
+              <url>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/main/LICENSE.txt</url>
+              <noticeUrl>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/refs/tags/azure-identity_1.13.3/NOTICE.txt</noticeUrl>
+            </override>
+            <override>
+              <gavs>
+                <gav>com.microsoft.azure:msal4j:1.17.1</gav>
+                <gav>com.microsoft.azure:msal4j-persistence-extension:1.3.0</gav>
+              </gavs>
+              <url>https://raw.githubusercontent.com/AzureAD/microsoft-authentication-library-for-java/refs/tags/v1.17.1/LICENSE</url>
             </override>
             <override>
               <gavs>
@@ -268,14 +281,6 @@
               <url>https://raw.githubusercontent.com/reactor/reactor-netty/v1.0.28/LICENSE</url>
             </override>
             <override>
-              <gav>com.microsoft.azure:msal4j:1.16.1</gav>
-              <url>https://raw.githubusercontent.com/AzureAD/microsoft-authentication-library-for-java/v1.16.1/LICENSE</url>
-            </override>
-            <override>
-              <gav>com.microsoft.azure:msal4j-persistence-extension:1.3.0</gav>
-              <url>https://raw.githubusercontent.com/AzureAD/microsoft-authentication-extensions-for-java/master/LICENSE</url>
-            </override>
-            <override>
               <gav>com.microsoft.azure:azure-keyvault-core:1.2.4</gav>
               <url>https://raw.githubusercontent.com/Azure/azure-sdk-for-java/main/sdk/keyvault/LICENSE</url>
             </override>
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 62bec6b..495d73f 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -100,7 +100,7 @@
     <hadoop-awsjavasdk.version>1.12.637</hadoop-awsjavasdk.version>
     <azureblobjavasdk.version>12.25.1</azureblobjavasdk.version>
     <azurecommonjavasdk.version>12.24.1</azurecommonjavasdk.version>
-    <azureidentity.version>1.13.1</azureidentity.version>
+    <azureidentity.version>1.13.3</azureidentity.version>
     <azuredatalakejavasdk.version>12.18.1</azuredatalakejavasdk.version>
     <gcsjavasdk.version>2.40.1</gcsjavasdk.version>
     <hadoop-azuresdk.version>8.6.6</hadoop-azuresdk.version>
@@ -2055,7 +2055,7 @@
       <dependency>
         <groupId>org.apache.avro</groupId>
         <artifactId>avro</artifactId>
-        <version>1.11.3</version>
+        <version>1.12.0</version>
       </dependency>
       <dependency>
         <groupId>org.apache.iceberg</groupId>
diff --git a/asterixdb/src/main/appended-resources/supplemental-models.xml b/asterixdb/src/main/appended-resources/supplemental-models.xml
index cd80e3f..8f69a80 100644
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@ -673,7 +673,6 @@
         <license.ignoreMissingEmbeddedLicense>12.25.1</license.ignoreMissingEmbeddedLicense>
         <license.ignoreMissingEmbeddedNotice>12.25.1</license.ignoreMissingEmbeddedNotice>
         <license.ignoreLicenseOverride>12.25.1</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>12.25.1</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -700,7 +699,6 @@
         <license.ignoreMissingEmbeddedLicense>12.24.1</license.ignoreMissingEmbeddedLicense>
         <license.ignoreMissingEmbeddedNotice>12.24.1</license.ignoreMissingEmbeddedNotice>
         <license.ignoreLicenseOverride>12.24.1</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>12.24.1</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -713,7 +711,6 @@
         <license.ignoreMissingEmbeddedLicense>12.10.1</license.ignoreMissingEmbeddedLicense>
         <license.ignoreMissingEmbeddedNotice>12.10.1</license.ignoreMissingEmbeddedNotice>
         <license.ignoreLicenseOverride>12.10.1</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>12.10.1</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -726,7 +723,6 @@
         <license.ignoreMissingEmbeddedLicense>1.45.1</license.ignoreMissingEmbeddedLicense>
         <license.ignoreMissingEmbeddedNotice>1.45.1</license.ignoreMissingEmbeddedNotice>
         <license.ignoreLicenseOverride>1.45.1</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>1.45.1</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -739,7 +735,6 @@
         <license.ignoreMissingEmbeddedLicense>1.13.11</license.ignoreMissingEmbeddedLicense>
         <license.ignoreMissingEmbeddedNotice>1.13.11</license.ignoreMissingEmbeddedNotice>
         <license.ignoreLicenseOverride>1.13.11</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>1.13.11</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -749,10 +744,9 @@
       <groupId>com.azure</groupId>
       <artifactId>azure-json</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.1.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.1.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.1.0</license.ignoreLicenseOverride>
-        <license.ignoreNoticeOverride>1.1.0</license.ignoreNoticeOverride>
+        <license.ignoreMissingEmbeddedLicense>1.3.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.3.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.3.0</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -762,9 +756,10 @@
       <groupId>com.azure</groupId>
       <artifactId>azure-identity</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.11.1</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.11.1</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.11.1</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.13.3</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.13.3</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.13.3</license.ignoreLicenseOverride>
+        <license.ignoreNoticeOverride>1.13.3</license.ignoreNoticeOverride>
       </properties>
     </project>
   </supplement>
@@ -775,8 +770,9 @@
       <groupId>com.microsoft.azure</groupId>
       <artifactId>msal4j</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.16.1</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.16.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.17.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.17.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.17.1</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -901,8 +897,8 @@
       <groupId>com.nimbusds</groupId>
       <artifactId>oauth2-oidc-sdk</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>10.7.1</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>10.7.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>11.18</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>11.18</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -913,8 +909,8 @@
       <groupId>com.nimbusds</groupId>
       <artifactId>nimbus-jose-jwt</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>9.30.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>9.30.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>9.40</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>9.40</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -937,8 +933,8 @@
       <groupId>com.nimbusds</groupId>
       <artifactId>content-type</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>2.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>2.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>2.3</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.3</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_AzureAD_microsoft-authentication-library-for-java_refs_tags_v1.17.1_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_AzureAD_microsoft-authentication-library-for-java_refs_tags_v1.17.1_LICENSE.txt
new file mode 100644
index 0000000..d1ca00f
--- /dev/null
+++ b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_AzureAD_microsoft-authentication-library-for-java_refs_tags_v1.17.1_LICENSE.txt
@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
\ No newline at end of file
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_LICENSE.txt
deleted file mode 100644
index 49d2166..0000000
--- a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Microsoft
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_NOTICE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_refs_tags_azure-identity_1.13.3_NOTICE.txt
similarity index 96%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_NOTICE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_refs_tags_azure-identity_1.13.3_NOTICE.txt
index ff05c53..28e74db 100644
--- a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_azure-identity_1.9.0_NOTICE.txt
+++ b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_Azure_azure-sdk-for-java_refs_tags_azure-identity_1.13.3_NOTICE.txt
@@ -606,4 +606,24 @@
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
+-------------------------------------------------------------------------------------------------
+
+License notice for OpenTelemetry Java instrumentation
+https://github.com/open-telemetry/opentelemetry-java-instrumentation/
+------------------------------------------------------------------------------
+
+Copyright [2023] [OpenTelemetry]
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java
index ad5e919..e7970d3 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java
@@ -35,6 +35,7 @@
 import org.apache.hyracks.util.InterruptibleSupplier;
 import org.apache.hyracks.util.Span;
 import org.apache.hyracks.util.ThrowingAction;
+import org.apache.hyracks.util.ThrowingConsumer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -251,6 +252,44 @@
         }
     }
 
+    // catching Throwable, instanceofs, false-positive unreachable code
+    public static void tryWithCleanups(ThrowingAction action, ThrowingConsumer<Throwable>... cleanups)
+            throws Exception {
+        Throwable savedT = null;
+        boolean suppressedInterrupted = false;
+        try {
+            action.run();
+        } catch (Throwable t) {
+            savedT = t;
+        } finally {
+            for (ThrowingConsumer cleanup : cleanups) {
+                try {
+                    cleanup.process(savedT);
+                } catch (Throwable t) {
+                    if (savedT != null) {
+                        savedT.addSuppressed(t);
+                        suppressedInterrupted = suppressedInterrupted || t instanceof InterruptedException;
+                    } else {
+                        savedT = t;
+                    }
+                }
+            }
+        }
+        if (savedT == null) {
+            return;
+        }
+        if (suppressedInterrupted) {
+            Thread.currentThread().interrupt();
+        }
+        if (savedT instanceof Error) {
+            throw (Error) savedT;
+        } else if (savedT instanceof Exception) {
+            throw (Exception) savedT;
+        } else {
+            throw HyracksDataException.create(savedT);
+        }
+    }
+
     @SuppressWarnings({ "squid:S1181", "squid:S1193", "ConstantConditions" }) // catching Throwable, instanceofs
     public static void tryIoWithCleanups(IOThrowingAction action, IOThrowingAction... cleanups) throws IOException {
         Throwable savedT = null;
diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index 20c3e21..d035c1e 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -499,6 +499,11 @@
         <artifactId>asm-util</artifactId>
         <version>${asm.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.hadoop</groupId>
+        <artifactId>hadoop-client-runtime</artifactId>
+        <version>3.4.1</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
   <build>
