From 39ecf382db6cc14bda788bf228a83ffc8f4144a7 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 11 Mar 2026 15:55:12 +0100 Subject: [PATCH 1/9] Add support for default_profile in [__settings__] section Adds support for the __settings__ section in .databrickscfg, enabling default_profile to specify which profile to use when none is explicitly set. The resolved profile is written back to DatabricksConfig so downstream consumers (e.g. DatabricksCliCredentialsProvider) see it. Rejects __settings__ as a profile target to prevent self-referencing. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/databricks/sdk/core/ConfigLoader.java | 11 ++ .../databricks/sdk/DefaultProfileTest.java | 125 ++++++++++++++++++ .../testdata/default_profile/.databrickscfg | 6 + .../.databrickscfg | 5 + .../.databrickscfg | 10 ++ .../.databrickscfg | 6 + .../default_profile_precedence/.databrickscfg | 10 ++ .../.databrickscfg | 6 + 8 files changed, 179 insertions(+) create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile/.databrickscfg create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile_empty_settings/.databrickscfg create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile_explicit_override/.databrickscfg create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile_nonexistent/.databrickscfg create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile_precedence/.databrickscfg create mode 100644 databricks-sdk-java/src/test/resources/testdata/default_profile_settings_self_ref/.databrickscfg diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index ae531ffc0..66c251a25 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -94,6 +94,17 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { String profile = cfg.getProfile(); boolean hasExplicitProfile = !isNullOrEmpty(profile); + if (!hasExplicitProfile) { + SubnodeConfiguration settings = ini.getSection("__settings__"); + if (settings != null && !settings.isEmpty()) { + String defaultProfile = settings.getString("default_profile"); + if (!isNullOrEmpty(defaultProfile) && !"__settings__".equals(defaultProfile)) { + profile = defaultProfile; + hasExplicitProfile = true; + cfg.setProfile(profile); + } + } + } if (!hasExplicitProfile) { profile = "DEFAULT"; } diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java new file mode 100644 index 000000000..830c74810 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java @@ -0,0 +1,125 @@ +package com.databricks.sdk; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; + +import com.databricks.sdk.core.ConfigResolving; +import com.databricks.sdk.core.DatabricksConfig; +import com.databricks.sdk.core.DatabricksException; +import com.databricks.sdk.core.http.HttpClient; +import com.databricks.sdk.core.utils.TestOSUtils; +import org.junit.jupiter.api.Test; + +public class DefaultProfileTest implements ConfigResolving { + + private DatabricksConfig createConfigWithMockClient() { + HttpClient mockClient = mock(HttpClient.class); + return new DatabricksConfig().setHttpClient(mockClient); + } + + /** Test 1: default_profile resolves correctly and is written back to config */ + @Test + public void testDefaultProfileResolvesCorrectly() { + StaticEnv env = + new StaticEnv().with("HOME", TestOSUtils.resource("/testdata/default_profile")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + assertEquals("pat", config.getAuthType()); + assertEquals("https://my-workspace.cloud.databricks.com", config.getHost()); + assertEquals("my-workspace", config.getProfile()); + } + + /** Test 2: default_profile takes precedence over [DEFAULT] */ + @Test + public void testDefaultProfileTakesPrecedenceOverDefault() { + StaticEnv env = + new StaticEnv() + .with("HOME", TestOSUtils.resource("/testdata/default_profile_precedence")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + assertEquals("pat", config.getAuthType()); + assertEquals("https://my-workspace.cloud.databricks.com", config.getHost()); + } + + /** Test 3: Legacy fallback when no [__settings__] */ + @Test + public void testLegacyFallbackWhenNoSettings() { + StaticEnv env = new StaticEnv().with("HOME", TestOSUtils.resource("/testdata")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + assertEquals("pat", config.getAuthType()); + assertEquals("https://dbc-XXXXXXXX-YYYY.cloud.databricks.com", config.getHost()); + } + + /** Test 4: Legacy fallback when default_profile is empty */ + @Test + public void testLegacyFallbackWhenDefaultProfileEmpty() { + StaticEnv env = + new StaticEnv() + .with("HOME", TestOSUtils.resource("/testdata/default_profile_empty_settings")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + assertEquals("pat", config.getAuthType()); + assertEquals("https://default.cloud.databricks.com", config.getHost()); + } + + /** Test 5: default_profile = __settings__ is rejected and falls back to DEFAULT */ + @Test + public void testSettingsSelfReferenceIsRejected() { + StaticEnv env = + new StaticEnv() + .with("HOME", TestOSUtils.resource("/testdata/default_profile_settings_self_ref")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + // __settings__ as a profile target should be ignored, falling back to [DEFAULT] + assertEquals("https://default.cloud.databricks.com", config.getHost()); + assertEquals("pat", config.getAuthType()); + } + + /** Test 6: Explicit --profile overrides default_profile */ + @Test + public void testExplicitProfileOverridesDefaultProfile() { + StaticEnv env = + new StaticEnv() + .with("DATABRICKS_CONFIG_PROFILE", "other") + .with("HOME", TestOSUtils.resource("/testdata/default_profile_explicit_override")); + DatabricksConfig config = createConfigWithMockClient(); + resolveConfig(config, env); + config.authenticate(); + + assertEquals("pat", config.getAuthType()); + assertEquals("https://other.cloud.databricks.com", config.getHost()); + } + + /** Test 7: default_profile pointing to nonexistent section */ + @Test + public void testDefaultProfileNonexistentSection() { + StaticEnv env = + new StaticEnv() + .with("HOME", TestOSUtils.resource("/testdata/default_profile_nonexistent")); + DatabricksConfig config = createConfigWithMockClient(); + + DatabricksException ex = + assertThrows( + DatabricksException.class, + () -> { + resolveConfig(config, env); + config.authenticate(); + }); + assertTrue( + ex.getMessage().contains("deleted-profile"), + "Error should mention the missing profile name: " + ex.getMessage()); + } +} diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile/.databrickscfg new file mode 100644 index 000000000..9a3f6a2d8 --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile/.databrickscfg @@ -0,0 +1,6 @@ +[__settings__] +default_profile = my-workspace + +[my-workspace] +host = https://my-workspace.cloud.databricks.com +token = dapiXYZ diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile_empty_settings/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile_empty_settings/.databrickscfg new file mode 100644 index 000000000..46880f70e --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile_empty_settings/.databrickscfg @@ -0,0 +1,5 @@ +[__settings__] + +[DEFAULT] +host = https://default.cloud.databricks.com +token = dapiXYZ diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile_explicit_override/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile_explicit_override/.databrickscfg new file mode 100644 index 000000000..c3f9f79be --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile_explicit_override/.databrickscfg @@ -0,0 +1,10 @@ +[__settings__] +default_profile = my-workspace + +[my-workspace] +host = https://my-workspace.cloud.databricks.com +token = dapiXYZ + +[other] +host = https://other.cloud.databricks.com +token = dapiOTHER diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile_nonexistent/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile_nonexistent/.databrickscfg new file mode 100644 index 000000000..d2c144c92 --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile_nonexistent/.databrickscfg @@ -0,0 +1,6 @@ +[__settings__] +default_profile = deleted-profile + +[my-workspace] +host = https://my-workspace.cloud.databricks.com +token = dapiXYZ diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile_precedence/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile_precedence/.databrickscfg new file mode 100644 index 000000000..ac8f295d6 --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile_precedence/.databrickscfg @@ -0,0 +1,10 @@ +[__settings__] +default_profile = my-workspace + +[DEFAULT] +host = https://default.cloud.databricks.com +token = dapiOLD + +[my-workspace] +host = https://my-workspace.cloud.databricks.com +token = dapiXYZ diff --git a/databricks-sdk-java/src/test/resources/testdata/default_profile_settings_self_ref/.databrickscfg b/databricks-sdk-java/src/test/resources/testdata/default_profile_settings_self_ref/.databrickscfg new file mode 100644 index 000000000..05f711147 --- /dev/null +++ b/databricks-sdk-java/src/test/resources/testdata/default_profile_settings_self_ref/.databrickscfg @@ -0,0 +1,6 @@ +[__settings__] +default_profile = __settings__ + +[DEFAULT] +host = https://default.cloud.databricks.com +token = dapiXYZ From be0e584d55d1ada1b0cbfb0af743c000d882e244 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 11 Mar 2026 17:04:31 +0100 Subject: [PATCH 2/9] Reject __settings__ as a reserved profile target Keep default_profile resolution aligned with the other SDKs by preserving the resolved profile name and surfacing bad settings targets instead of silently falling back. --- .../com/databricks/sdk/core/ConfigLoader.java | 21 +++++++---- .../databricks/sdk/DefaultProfileTest.java | 37 ++++++++++++++++--- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index 66c251a25..757f1dc5d 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -19,6 +19,7 @@ @InternalApi public class ConfigLoader { private static final Logger LOG = LoggerFactory.getLogger(ConfigLoader.class); + private static final String SETTINGS_SECTION = "__settings__"; private static final List accessors = attributeAccessors(); @@ -94,23 +95,26 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { String profile = cfg.getProfile(); boolean hasExplicitProfile = !isNullOrEmpty(profile); + boolean hasDefaultProfileSetting = false; if (!hasExplicitProfile) { - SubnodeConfiguration settings = ini.getSection("__settings__"); + SubnodeConfiguration settings = ini.getSection(SETTINGS_SECTION); if (settings != null && !settings.isEmpty()) { String defaultProfile = settings.getString("default_profile"); - if (!isNullOrEmpty(defaultProfile) && !"__settings__".equals(defaultProfile)) { + if (defaultProfile != null) { + defaultProfile = defaultProfile.trim(); + } + if (!isNullOrEmpty(defaultProfile)) { profile = defaultProfile; - hasExplicitProfile = true; - cfg.setProfile(profile); + hasDefaultProfileSetting = true; } } } - if (!hasExplicitProfile) { + if (!hasExplicitProfile && !hasDefaultProfileSetting) { profile = "DEFAULT"; } - SubnodeConfiguration section = ini.getSection(profile); + SubnodeConfiguration section = SETTINGS_SECTION.equals(profile) ? null : ini.getSection(profile); boolean sectionNotPresent = section == null || section.isEmpty(); - if (sectionNotPresent && !hasExplicitProfile) { + if (sectionNotPresent && !hasExplicitProfile && !hasDefaultProfileSetting) { LOG.info("{} has no {} profile configured", configFile, profile); return; } @@ -118,6 +122,9 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { String msg = String.format("resolve: %s has no %s profile configured", configFile, profile); throw new DatabricksException(msg); } + if (hasDefaultProfileSetting) { + cfg.setProfile(profile); + } for (ConfigAttributeAccessor accessor : accessors) { String value = section.getString(accessor.getName()); diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java index 830c74810..eb2526f1b 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java @@ -73,19 +73,24 @@ public void testLegacyFallbackWhenDefaultProfileEmpty() { assertEquals("https://default.cloud.databricks.com", config.getHost()); } - /** Test 5: default_profile = __settings__ is rejected and falls back to DEFAULT */ + /** Test 5: default_profile = __settings__ is rejected */ @Test public void testSettingsSelfReferenceIsRejected() { StaticEnv env = new StaticEnv() .with("HOME", TestOSUtils.resource("/testdata/default_profile_settings_self_ref")); DatabricksConfig config = createConfigWithMockClient(); - resolveConfig(config, env); - config.authenticate(); - // __settings__ as a profile target should be ignored, falling back to [DEFAULT] - assertEquals("https://default.cloud.databricks.com", config.getHost()); - assertEquals("pat", config.getAuthType()); + DatabricksException ex = + assertThrows( + DatabricksException.class, + () -> { + resolveConfig(config, env); + config.authenticate(); + }); + assertTrue( + ex.getMessage().contains("has no __settings__ profile configured"), + "Error should reject __settings__ as a profile target: " + ex.getMessage()); } /** Test 6: Explicit --profile overrides default_profile */ @@ -103,6 +108,26 @@ public void testExplicitProfileOverridesDefaultProfile() { assertEquals("https://other.cloud.databricks.com", config.getHost()); } + @Test + public void testExplicitSettingsSectionProfileIsRejected() { + StaticEnv env = + new StaticEnv() + .with("DATABRICKS_CONFIG_PROFILE", "__settings__") + .with("HOME", TestOSUtils.resource("/testdata/default_profile")); + DatabricksConfig config = createConfigWithMockClient(); + + DatabricksException ex = + assertThrows( + DatabricksException.class, + () -> { + resolveConfig(config, env); + config.authenticate(); + }); + assertTrue( + ex.getMessage().contains("has no __settings__ profile configured"), + "Error should reject __settings__ as a profile target: " + ex.getMessage()); + } + /** Test 7: default_profile pointing to nonexistent section */ @Test public void testDefaultProfileNonexistentSection() { From 5c59decd0db5fe1b500b307310a0847a201b81a7 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 11 Mar 2026 17:27:32 +0100 Subject: [PATCH 3/9] Fix spotless formatting and add NEXT_CHANGELOG entry --- NEXT_CHANGELOG.md | 1 + .../main/java/com/databricks/sdk/core/ConfigLoader.java | 3 ++- .../test/java/com/databricks/sdk/DefaultProfileTest.java | 9 +++------ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 3d39694b1..20b06b208 100755 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -3,6 +3,7 @@ ## Release v0.100.0 ### New Features and Improvements +* Support `default_profile` in `[__settings__]` section of `.databrickscfg` for consistent default profile resolution across CLI and SDKs. ### Bug Fixes diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index 757f1dc5d..453b87608 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -112,7 +112,8 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { if (!hasExplicitProfile && !hasDefaultProfileSetting) { profile = "DEFAULT"; } - SubnodeConfiguration section = SETTINGS_SECTION.equals(profile) ? null : ini.getSection(profile); + SubnodeConfiguration section = + SETTINGS_SECTION.equals(profile) ? null : ini.getSection(profile); boolean sectionNotPresent = section == null || section.isEmpty(); if (sectionNotPresent && !hasExplicitProfile && !hasDefaultProfileSetting) { LOG.info("{} has no {} profile configured", configFile, profile); diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java index eb2526f1b..df5937bac 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java @@ -22,8 +22,7 @@ private DatabricksConfig createConfigWithMockClient() { /** Test 1: default_profile resolves correctly and is written back to config */ @Test public void testDefaultProfileResolvesCorrectly() { - StaticEnv env = - new StaticEnv().with("HOME", TestOSUtils.resource("/testdata/default_profile")); + StaticEnv env = new StaticEnv().with("HOME", TestOSUtils.resource("/testdata/default_profile")); DatabricksConfig config = createConfigWithMockClient(); resolveConfig(config, env); config.authenticate(); @@ -37,8 +36,7 @@ public void testDefaultProfileResolvesCorrectly() { @Test public void testDefaultProfileTakesPrecedenceOverDefault() { StaticEnv env = - new StaticEnv() - .with("HOME", TestOSUtils.resource("/testdata/default_profile_precedence")); + new StaticEnv().with("HOME", TestOSUtils.resource("/testdata/default_profile_precedence")); DatabricksConfig config = createConfigWithMockClient(); resolveConfig(config, env); config.authenticate(); @@ -132,8 +130,7 @@ public void testExplicitSettingsSectionProfileIsRejected() { @Test public void testDefaultProfileNonexistentSection() { StaticEnv env = - new StaticEnv() - .with("HOME", TestOSUtils.resource("/testdata/default_profile_nonexistent")); + new StaticEnv().with("HOME", TestOSUtils.resource("/testdata/default_profile_nonexistent")); DatabricksConfig config = createConfigWithMockClient(); DatabricksException ex = From c417dc77cb4d7b87064898d5e55a05fc614aca35 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 16 Mar 2026 16:49:47 +0100 Subject: [PATCH 4/9] Extract resolveProfile to simplify loadFromConfig Move all profile resolution logic (explicit, __settings__, DEFAULT fallback) into a single resolveProfile method that returns the profile name and whether it is a silent fallback. This replaces the two-boolean pattern (hasExplicitProfile, hasDefaultProfileSetting) with a clearer isFallback flag, and keeps __settings__ knowledge out of loadFromConfig entirely. Also improves error messages when __settings__ is used as a profile name: now says "reserved section name" instead of the generic "has no __settings__ profile configured". Co-authored-by: Isaac --- .../com/databricks/sdk/core/ConfigLoader.java | 83 +++++++++++++------ .../databricks/sdk/DefaultProfileTest.java | 4 +- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index 453b87608..2930c0340 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -93,37 +93,22 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { INIConfiguration ini = parseDatabricksCfg(configFile, isDefaultConfig); if (ini == null) return; - String profile = cfg.getProfile(); - boolean hasExplicitProfile = !isNullOrEmpty(profile); - boolean hasDefaultProfileSetting = false; - if (!hasExplicitProfile) { - SubnodeConfiguration settings = ini.getSection(SETTINGS_SECTION); - if (settings != null && !settings.isEmpty()) { - String defaultProfile = settings.getString("default_profile"); - if (defaultProfile != null) { - defaultProfile = defaultProfile.trim(); - } - if (!isNullOrEmpty(defaultProfile)) { - profile = defaultProfile; - hasDefaultProfileSetting = true; - } - } - } - if (!hasExplicitProfile && !hasDefaultProfileSetting) { - profile = "DEFAULT"; - } - SubnodeConfiguration section = - SETTINGS_SECTION.equals(profile) ? null : ini.getSection(profile); + String[] resolved = resolveProfile(cfg.getProfile(), ini, configFile.toString()); + String profile = resolved[0]; + boolean isFallback = "true".equals(resolved[1]); + + SubnodeConfiguration section = ini.getSection(profile); boolean sectionNotPresent = section == null || section.isEmpty(); - if (sectionNotPresent && !hasExplicitProfile && !hasDefaultProfileSetting) { - LOG.info("{} has no {} profile configured", configFile, profile); - return; - } if (sectionNotPresent) { + if (isFallback) { + LOG.info("{} has no {} profile configured", configFile, profile); + return; + } String msg = String.format("resolve: %s has no %s profile configured", configFile, profile); throw new DatabricksException(msg); } - if (hasDefaultProfileSetting) { + + if (!isFallback) { cfg.setProfile(profile); } @@ -136,6 +121,52 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { } } + /** + * Resolves which profile to use from the config file. + * + *

Resolution order: + * + *

    + *
  1. Explicit profile (flag, env var, or programmatic config) with isFallback=false + *
  2. {@code [__settings__].default_profile} with isFallback=false + *
  3. {@code "DEFAULT"} with isFallback=true + *
+ * + * @return a two-element array: [profileName, "true"/"false" for isFallback] + * @throws DatabricksException if the resolved profile is the reserved __settings__ section + */ + static String[] resolveProfile( + String requestedProfile, INIConfiguration ini, String configFile) { + if (!isNullOrEmpty(requestedProfile)) { + if (SETTINGS_SECTION.equals(requestedProfile)) { + throw new DatabricksException( + String.format( + "%s: %s is a reserved section name and cannot be used as a profile", + configFile, SETTINGS_SECTION)); + } + return new String[] {requestedProfile, "false"}; + } + + SubnodeConfiguration settings = ini.getSection(SETTINGS_SECTION); + if (settings != null && !settings.isEmpty()) { + String defaultProfile = settings.getString("default_profile"); + if (defaultProfile != null) { + defaultProfile = defaultProfile.trim(); + } + if (!isNullOrEmpty(defaultProfile)) { + if (SETTINGS_SECTION.equals(defaultProfile)) { + throw new DatabricksException( + String.format( + "%s: %s is a reserved section name and cannot be used as a profile", + configFile, SETTINGS_SECTION)); + } + return new String[] {defaultProfile, "false"}; + } + } + + return new String[] {"DEFAULT", "true"}; + } + private static INIConfiguration parseDatabricksCfg(String configFile, boolean isDefaultConfig) { INIConfiguration iniConfig = new INIConfiguration(); try (FileReader reader = new FileReader(configFile)) { diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java index df5937bac..2df78a1f4 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/DefaultProfileTest.java @@ -87,7 +87,7 @@ public void testSettingsSelfReferenceIsRejected() { config.authenticate(); }); assertTrue( - ex.getMessage().contains("has no __settings__ profile configured"), + ex.getMessage().contains("reserved section name"), "Error should reject __settings__ as a profile target: " + ex.getMessage()); } @@ -122,7 +122,7 @@ public void testExplicitSettingsSectionProfileIsRejected() { config.authenticate(); }); assertTrue( - ex.getMessage().contains("has no __settings__ profile configured"), + ex.getMessage().contains("reserved section name"), "Error should reject __settings__ as a profile target: " + ex.getMessage()); } From d029dd287ca67f942da348117dd5a3dcdd16f625 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 16 Mar 2026 16:55:54 +0100 Subject: [PATCH 5/9] Fix spotless formatting for resolveProfile signature Co-authored-by: Isaac --- .../src/main/java/com/databricks/sdk/core/ConfigLoader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index 2930c0340..a1a6214e9 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -135,8 +135,7 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { * @return a two-element array: [profileName, "true"/"false" for isFallback] * @throws DatabricksException if the resolved profile is the reserved __settings__ section */ - static String[] resolveProfile( - String requestedProfile, INIConfiguration ini, String configFile) { + static String[] resolveProfile(String requestedProfile, INIConfiguration ini, String configFile) { if (!isNullOrEmpty(requestedProfile)) { if (SETTINGS_SECTION.equals(requestedProfile)) { throw new DatabricksException( From a55e191284ad51c6a20660c79ebc8afafc51d419 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 28 Mar 2026 08:40:41 +0100 Subject: [PATCH 6/9] Replace String[] with ResolvedProfile inner class Address review feedback: use a typed inner class instead of a String array to represent the resolved profile name and fallback flag. Co-authored-by: Isaac --- .../com/databricks/sdk/core/ConfigLoader.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java index a1a6214e9..1f47f8155 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/ConfigLoader.java @@ -93,9 +93,9 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { INIConfiguration ini = parseDatabricksCfg(configFile, isDefaultConfig); if (ini == null) return; - String[] resolved = resolveProfile(cfg.getProfile(), ini, configFile.toString()); - String profile = resolved[0]; - boolean isFallback = "true".equals(resolved[1]); + ResolvedProfile resolved = resolveProfile(cfg.getProfile(), ini, configFile.toString()); + String profile = resolved.name; + boolean isFallback = resolved.isFallback; SubnodeConfiguration section = ini.getSection(profile); boolean sectionNotPresent = section == null || section.isEmpty(); @@ -121,6 +121,16 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { } } + static class ResolvedProfile { + final String name; + final boolean isFallback; + + ResolvedProfile(String name, boolean isFallback) { + this.name = name; + this.isFallback = isFallback; + } + } + /** * Resolves which profile to use from the config file. * @@ -132,10 +142,10 @@ static void loadFromConfig(DatabricksConfig cfg) throws IllegalAccessException { *
  • {@code "DEFAULT"} with isFallback=true * * - * @return a two-element array: [profileName, "true"/"false" for isFallback] * @throws DatabricksException if the resolved profile is the reserved __settings__ section */ - static String[] resolveProfile(String requestedProfile, INIConfiguration ini, String configFile) { + static ResolvedProfile resolveProfile( + String requestedProfile, INIConfiguration ini, String configFile) { if (!isNullOrEmpty(requestedProfile)) { if (SETTINGS_SECTION.equals(requestedProfile)) { throw new DatabricksException( @@ -143,7 +153,7 @@ static String[] resolveProfile(String requestedProfile, INIConfiguration ini, St "%s: %s is a reserved section name and cannot be used as a profile", configFile, SETTINGS_SECTION)); } - return new String[] {requestedProfile, "false"}; + return new ResolvedProfile(requestedProfile, false); } SubnodeConfiguration settings = ini.getSection(SETTINGS_SECTION); @@ -159,11 +169,11 @@ static String[] resolveProfile(String requestedProfile, INIConfiguration ini, St "%s: %s is a reserved section name and cannot be used as a profile", configFile, SETTINGS_SECTION)); } - return new String[] {defaultProfile, "false"}; + return new ResolvedProfile(defaultProfile, false); } } - return new String[] {"DEFAULT", "true"}; + return new ResolvedProfile("DEFAULT", true); } private static INIConfiguration parseDatabricksCfg(String configFile, boolean isDefaultConfig) { From 5be1ea0b167d8a4b30adcc0697d77621d10a0987 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 1 Apr 2026 20:04:02 +0200 Subject: [PATCH 7/9] Regenerate maven lockfile after merge from main Co-authored-by: Isaac --- databricks-sdk-java/lockfile.json | 236 +++++++++++++++--------------- lockfile.json | 6 +- 2 files changed, 121 insertions(+), 121 deletions(-) diff --git a/databricks-sdk-java/lockfile.json b/databricks-sdk-java/lockfile.json index 8ba1d918d..0d493c0b4 100644 --- a/databricks-sdk-java/lockfile.json +++ b/databricks-sdk-java/lockfile.json @@ -11,7 +11,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "face5c37bee1f0768f5f198d077fc29d163becca95de9e0f13962c84d1047662", "scope": "provided", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.core:jackson-annotations:2.18.6", @@ -24,7 +24,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "45d124736ea29dc374171fc1a8a9958e0f44407c1e0aae0297d8eee267fb592e", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.core:jackson-databind:2.18.6", @@ -36,7 +36,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "face5c37bee1f0768f5f198d077fc29d163becca95de9e0f13962c84d1047662", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-annotations:2.18.6", @@ -50,7 +50,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e7e1bfa50f0a79db37e6aa37db111cf03aebf4a484b359d21127ab43ab2398c6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.core:jackson-core:2.18.6", @@ -66,7 +66,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "ce2f0c5a89f5b06573a3f4e58d997f56dc3dea400e3ce13d5bb309ae526cead4", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-guava/2.18.6/jackson-datatype-guava-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/datatype/jackson-datatype-guava/2.18.6/jackson-datatype-guava-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.datatype:jackson-datatype-guava:2.18.6", @@ -78,7 +78,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e7e1bfa50f0a79db37e6aa37db111cf03aebf4a484b359d21127ab43ab2398c6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-core:2.18.6", @@ -92,7 +92,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "45d124736ea29dc374171fc1a8a9958e0f44407c1e0aae0297d8eee267fb592e", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-databind:2.18.6", @@ -106,7 +106,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "6db0c3a244c397429c2e362ea2837c3622d5b68bb95105d37c21c36e5bc70abf", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/guava/25.1-jre/guava-25.1-jre.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/guava/25.1-jre/guava-25.1-jre.jar", "selectedVersion": "32.0.0-android", "included": false, "id": "com.google.guava:guava:25.1-jre", @@ -122,7 +122,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b3287d74a95741b95295922f64e35e9204825fdd950606613a706d045bdc7443", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.18.6/jackson-datatype-jdk8-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.18.6/jackson-datatype-jdk8-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.6", @@ -134,7 +134,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e7e1bfa50f0a79db37e6aa37db111cf03aebf4a484b359d21127ab43ab2398c6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-core:2.18.6", @@ -148,7 +148,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "45d124736ea29dc374171fc1a8a9958e0f44407c1e0aae0297d8eee267fb592e", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-databind:2.18.6", @@ -164,7 +164,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "d600821e90b08353425d3fa31d6a5e08f38b190be93ed284097e6fa66cac1bb4", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.18.6/jackson-datatype-jsr310-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.18.6/jackson-datatype-jsr310-2.18.6.jar", "selectedVersion": "2.18.6", "included": true, "id": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.6", @@ -176,7 +176,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "face5c37bee1f0768f5f198d077fc29d163becca95de9e0f13962c84d1047662", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-annotations/2.18.6/jackson-annotations-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-annotations:2.18.6", @@ -190,7 +190,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e7e1bfa50f0a79db37e6aa37db111cf03aebf4a484b359d21127ab43ab2398c6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-core/2.18.6/jackson-core-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-core:2.18.6", @@ -204,7 +204,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "45d124736ea29dc374171fc1a8a9958e0f44407c1e0aae0297d8eee267fb592e", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/fasterxml/jackson/core/jackson-databind/2.18.6/jackson-databind-2.18.6.jar", "selectedVersion": "2.18.6", "included": false, "id": "com.fasterxml.jackson.core:jackson-databind:2.18.6", @@ -220,7 +220,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "ab3ee74eeccb12fca40f4444af4d45df9e290f2c3f4751e855697dedf52f7a73", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/auth/google-auth-library-oauth2-http/1.20.0/google-auth-library-oauth2-http-1.20.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/auth/google-auth-library-oauth2-http/1.20.0/google-auth-library-oauth2-http-1.20.0.jar", "selectedVersion": "1.20.0", "included": true, "id": "com.google.auth:google-auth-library-oauth2-http:1.20.0", @@ -232,7 +232,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b3054d8757807f8af8015b535fb288ed67456444922211f0f929f4c04e69b0b7", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/auth/google-auth-library-credentials/1.20.0/google-auth-library-credentials-1.20.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/auth/google-auth-library-credentials/1.20.0/google-auth-library-credentials-1.20.0.jar", "selectedVersion": "1.20.0", "included": true, "id": "com.google.auth:google-auth-library-credentials:1.20.0", @@ -246,7 +246,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.10.4/auto-value-annotations-1.10.4.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/auto/value/auto-value-annotations/1.10.4/auto-value-annotations-1.10.4.jar", "selectedVersion": "1.10.4", "included": false, "id": "com.google.auto.value:auto-value-annotations:1.10.4", @@ -260,7 +260,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", "selectedVersion": "3.0.2", "included": true, "id": "com.google.code.findbugs:jsr305:3.0.2", @@ -274,7 +274,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "96952b394133aa20ad3f18f4fb09582b12a8aa95e78c40203c7fb9efedcc2f7c", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/guava/32.0.0-android/guava-32.0.0-android.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/guava/32.0.0-android/guava-32.0.0-android.jar", "selectedVersion": "32.0.0-android", "included": true, "id": "com.google.guava:guava:32.0.0-android", @@ -287,7 +287,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", "selectedVersion": "3.0.2", "included": false, "id": "com.google.code.findbugs:jsr305:3.0.2", @@ -301,7 +301,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", "selectedVersion": "2.18.0", "included": false, "id": "com.google.errorprone:error_prone_annotations:2.18.0", @@ -315,7 +315,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", "selectedVersion": "1.0.1", "included": true, "id": "com.google.guava:failureaccess:1.0.1", @@ -329,7 +329,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", "selectedVersion": "9999.0-empty-to-avoid-conflict-with-guava", "included": true, "id": "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", @@ -343,7 +343,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", "selectedVersion": "2.8", "included": false, "id": "com.google.j2objc:j2objc-annotations:2.8", @@ -357,7 +357,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar", "selectedVersion": "3.33.0", "included": true, "id": "org.checkerframework:checker-qual:3.33.0", @@ -373,7 +373,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "60aca7428c5a1ff3655b70541a98ff3d70dded48ac1324dae1af39f1b61914af", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/http-client/google-http-client/1.43.3/google-http-client-1.43.3.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/http-client/google-http-client/1.43.3/google-http-client-1.43.3.jar", "selectedVersion": "1.43.3", "included": true, "id": "com.google.http-client:google-http-client:1.43.3", @@ -386,7 +386,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", "selectedVersion": "3.0.2", "included": false, "id": "com.google.code.findbugs:jsr305:3.0.2", @@ -400,7 +400,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", "selectedVersion": "2.18.0", "included": false, "id": "com.google.errorprone:error_prone_annotations:2.18.0", @@ -414,7 +414,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "355f79352f8c252f2bdaa06c687c4836a38016caccfc4c28d16ae77ecfdffa2f", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/guava/30.1.1-android/guava-30.1.1-android.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/guava/30.1.1-android/guava-30.1.1-android.jar", "selectedVersion": "32.0.0-android", "included": false, "id": "com.google.guava:guava:30.1.1-android", @@ -428,7 +428,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", "selectedVersion": "2.8", "included": false, "id": "com.google.j2objc:j2objc-annotations:2.8", @@ -442,7 +442,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f1474d47f4b6b001558ad27b952e35eda5cc7146788877fc52938c6eba24b382", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar", + "resolved": "https://maven-proxy.dev.databricks.com/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar", "selectedVersion": "0.31.1", "included": true, "id": "io.opencensus:opencensus-api:0.31.1", @@ -455,7 +455,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "bcbf9055dff453fd6508bd7cca2a0aa2d5f059a9c94beed1f5fda1dc015607b8", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/io/grpc/grpc-context/1.27.2/grpc-context-1.27.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/io/grpc/grpc-context/1.27.2/grpc-context-1.27.2.jar", "selectedVersion": "1.27.2", "included": true, "id": "io.grpc:grpc-context:1.27.2", @@ -471,7 +471,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "3ea995b55a4068be22989b70cc29a4d788c2d328d1d50613a7a9afd13fdd2d0a", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/io/opencensus/opencensus-contrib-http-util/0.31.1/opencensus-contrib-http-util-0.31.1.jar", + "resolved": "https://maven-proxy.dev.databricks.com/io/opencensus/opencensus-contrib-http-util/0.31.1/opencensus-contrib-http-util-0.31.1.jar", "selectedVersion": "0.31.1", "included": true, "id": "io.opencensus:opencensus-contrib-http-util:0.31.1", @@ -484,7 +484,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "00ba22cb0e32610db7cf8ab4c20017c85d11788600734ff1d86995345eb5bc3b", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/guava/29.0-android/guava-29.0-android.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/guava/29.0-android/guava-29.0-android.jar", "selectedVersion": "32.0.0-android", "included": false, "id": "com.google.guava:guava:29.0-android", @@ -498,7 +498,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f1474d47f4b6b001558ad27b952e35eda5cc7146788877fc52938c6eba24b382", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar", + "resolved": "https://maven-proxy.dev.databricks.com/io/opencensus/opencensus-api/0.31.1/opencensus-api-0.31.1.jar", "selectedVersion": "0.31.1", "included": false, "id": "io.opencensus:opencensus-api:0.31.1", @@ -514,7 +514,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", "selectedVersion": "4.5.14", "included": false, "id": "org.apache.httpcomponents:httpclient:4.5.14", @@ -528,7 +528,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", "selectedVersion": "4.4.16", "included": false, "id": "org.apache.httpcomponents:httpcore:4.4.16", @@ -544,7 +544,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e31a4edcb9c83954a2587e14fa2f3f8f4aad56152381b3321a3bd0bcae03fa26", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/http-client/google-http-client-gson/1.43.3/google-http-client-gson-1.43.3.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/http-client/google-http-client-gson/1.43.3/google-http-client-gson-1.43.3.jar", "selectedVersion": "1.43.3", "included": true, "id": "com.google.http-client:google-http-client-gson:1.43.3", @@ -557,7 +557,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar", "selectedVersion": "2.8.9", "included": false, "id": "com.google.code.gson:gson:2.10.1", @@ -571,7 +571,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "60aca7428c5a1ff3655b70541a98ff3d70dded48ac1324dae1af39f1b61914af", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/http-client/google-http-client/1.43.3/google-http-client-1.43.3.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/http-client/google-http-client/1.43.3/google-http-client-1.43.3.jar", "selectedVersion": "1.43.3", "included": false, "id": "com.google.http-client:google-http-client:1.43.3", @@ -589,7 +589,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f3c438d1f82904bbcb452084d488b660f3c7488e9274c3a58f049e121632d434", "scope": "provided", - "resolved": "https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.10.4/auto-value-1.10.4.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/auto/value/auto-value/1.10.4/auto-value-1.10.4.jar", "selectedVersion": "1.10.4", "included": true, "id": "com.google.auto.value:auto-value:1.10.4", @@ -602,7 +602,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825", "scope": "provided", - "resolved": "https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.10.4/auto-value-annotations-1.10.4.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/auto/value/auto-value-annotations/1.10.4/auto-value-annotations-1.10.4.jar", "selectedVersion": "1.10.4", "included": true, "id": "com.google.auto.value:auto-value-annotations:1.10.4", @@ -615,7 +615,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "8540247fad9e06baefa8fb45eb313802d019f485f14300e0f9d6b556ed88e753", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.25.5/protobuf-java-3.25.5.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/protobuf/protobuf-java/3.25.5/protobuf-java-3.25.5.jar", "selectedVersion": "3.25.5", "included": true, "id": "com.google.protobuf:protobuf-java:3.25.5", @@ -628,7 +628,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "dacc58b2c3d2fa8d4bddc1acb881e78d6cf7c137dd78bc1d67f6aca732436a8d", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.25.5/protobuf-java-util-3.25.5.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/protobuf/protobuf-java-util/3.25.5/protobuf-java-util-3.25.5.jar", "selectedVersion": "3.25.5", "included": true, "id": "com.google.protobuf:protobuf-java-util:3.25.5", @@ -640,7 +640,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", "selectedVersion": "3.0.2", "included": false, "id": "com.google.code.findbugs:jsr305:3.0.2", @@ -654,7 +654,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar", "selectedVersion": "2.8.9", "included": true, "id": "com.google.code.gson:gson:2.8.9", @@ -668,7 +668,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar", "selectedVersion": "2.18.0", "included": true, "id": "com.google.errorprone:error_prone_annotations:2.18.0", @@ -682,7 +682,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/guava/guava/32.0.1-jre/guava-32.0.1-jre.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/guava/guava/32.0.1-jre/guava-32.0.1-jre.jar", "selectedVersion": "32.0.0-android", "included": false, "id": "com.google.guava:guava:32.0.1-jre", @@ -696,7 +696,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar", "selectedVersion": "2.8", "included": true, "id": "com.google.j2objc:j2objc-annotations:2.8", @@ -710,7 +710,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "8540247fad9e06baefa8fb45eb313802d019f485f14300e0f9d6b556ed88e753", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.25.5/protobuf-java-3.25.5.jar", + "resolved": "https://maven-proxy.dev.databricks.com/com/google/protobuf/protobuf-java/3.25.5/protobuf-java-3.25.5.jar", "selectedVersion": "3.25.5", "included": false, "id": "com.google.protobuf:protobuf-java:3.25.5", @@ -726,7 +726,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e35d1df7232568ed4b81d9a9ed94a0159b3ff6cf1915cc21eef5cb55d7b157a2", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/commons-io/commons-io/2.14.0/commons-io-2.14.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/commons-io/commons-io/2.14.0/commons-io-2.14.0.jar", "selectedVersion": "2.14.0", "included": true, "id": "commons-io:commons-io:2.14.0", @@ -735,68 +735,68 @@ { "groupId": "org.apache.commons", "artifactId": "commons-configuration2", - "version": "2.11.0", + "version": "2.13.0", "checksumAlgorithm": "SHA-256", - "checksum": "48957fc3a0d9fbd221fe4f5ff6d0294ce6646ea139793c36706703da59402683", + "checksum": "7622799663317f95c81019b32b39e0c82e42b388f00abe6e5ab26489d90d9a6b", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/commons/commons-configuration2/2.11.0/commons-configuration2-2.11.0.jar", - "selectedVersion": "2.11.0", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/commons/commons-configuration2/2.13.0/commons-configuration2-2.13.0.jar", + "selectedVersion": "2.13.0", "included": true, - "id": "org.apache.commons:commons-configuration2:2.11.0", + "id": "org.apache.commons:commons-configuration2:2.13.0", "children": [ { "groupId": "commons-logging", "artifactId": "commons-logging", - "version": "1.3.2", + "version": "1.3.5", "checksumAlgorithm": "SHA-256", - "checksum": "6b858424f518015f32bfcd1183a373f4a827d72d026b6031da0c91cf0e8f3489", + "checksum": "6d7a744e4027649fbb50895df9497d109f98c766a637062fe8d2eabbb3140ba4", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.2/commons-logging-1.3.2.jar", - "selectedVersion": "1.3.2", + "resolved": "https://maven-proxy.dev.databricks.com/commons-logging/commons-logging/1.3.5/commons-logging-1.3.5.jar", + "selectedVersion": "1.3.5", "included": true, - "id": "commons-logging:commons-logging:1.3.2", - "parent": "org.apache.commons:commons-configuration2:2.11.0", + "id": "commons-logging:commons-logging:1.3.5", + "parent": "org.apache.commons:commons-configuration2:2.13.0", "children": [] }, { "groupId": "org.apache.commons", "artifactId": "commons-lang3", - "version": "3.14.0", + "version": "3.20.0", "checksumAlgorithm": "SHA-256", - "checksum": "7b96bf3ee68949abb5bc465559ac270e0551596fa34523fddf890ec418dde13c", + "checksum": "69e5c9fa35da7a51a5fd2099dfe56a2d8d32cf233e2f6d770e796146440263f4", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar", - "selectedVersion": "3.14.0", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/commons/commons-lang3/3.20.0/commons-lang3-3.20.0.jar", + "selectedVersion": "3.20.0", "included": true, - "id": "org.apache.commons:commons-lang3:3.14.0", - "parent": "org.apache.commons:commons-configuration2:2.11.0", + "id": "org.apache.commons:commons-lang3:3.20.0", + "parent": "org.apache.commons:commons-configuration2:2.13.0", "children": [] }, { "groupId": "org.apache.commons", "artifactId": "commons-text", - "version": "1.12.0", + "version": "1.14.0", "checksumAlgorithm": "SHA-256", - "checksum": "de023257ff166044a56bd1aa9124e843cd05dac5806cc705a9311f3556d5a15f", + "checksum": "121fce2282910c8f0c3ba793a5436b31beb710423cbe2d574a3fb7a73c508e92", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/commons/commons-text/1.12.0/commons-text-1.12.0.jar", - "selectedVersion": "1.12.0", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/commons/commons-text/1.14.0/commons-text-1.14.0.jar", + "selectedVersion": "1.14.0", "included": true, - "id": "org.apache.commons:commons-text:1.12.0", - "parent": "org.apache.commons:commons-configuration2:2.11.0", + "id": "org.apache.commons:commons-text:1.14.0", + "parent": "org.apache.commons:commons-configuration2:2.13.0", "children": [ { "groupId": "org.apache.commons", "artifactId": "commons-lang3", - "version": "3.14.0", + "version": "3.18.0", "checksumAlgorithm": "SHA-256", - "checksum": "7b96bf3ee68949abb5bc465559ac270e0551596fa34523fddf890ec418dde13c", + "checksum": "4eeeae8d20c078abb64b015ec158add383ac581571cddc45c68f0c9ae0230720", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar", - "selectedVersion": "3.14.0", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/commons/commons-lang3/3.18.0/commons-lang3-3.18.0.jar", + "selectedVersion": "3.20.0", "included": false, - "id": "org.apache.commons:commons-lang3:3.14.0", - "parent": "org.apache.commons:commons-text:1.12.0", + "id": "org.apache.commons:commons-lang3:3.18.0", + "parent": "org.apache.commons:commons-text:1.14.0", "children": [] } ] @@ -810,7 +810,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", "selectedVersion": "4.5.14", "included": true, "id": "org.apache.httpcomponents:httpclient:4.5.14", @@ -822,7 +822,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "e599d5318e97aa48f42136a2927e6dfa4e8881dff0e6c8e3109ddbbff51d7b7d", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.jar", + "resolved": "https://maven-proxy.dev.databricks.com/commons-codec/commons-codec/1.11/commons-codec-1.11.jar", "selectedVersion": "1.11", "included": true, "id": "commons-codec:commons-codec:1.11", @@ -836,8 +836,8 @@ "checksumAlgorithm": "SHA-256", "checksum": "daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar", - "selectedVersion": "1.3.2", + "resolved": "https://maven-proxy.dev.databricks.com/commons-logging/commons-logging/1.2/commons-logging-1.2.jar", + "selectedVersion": "1.3.5", "included": false, "id": "commons-logging:commons-logging:1.2", "parent": "org.apache.httpcomponents:httpclient:4.5.14", @@ -850,7 +850,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", "selectedVersion": "4.4.16", "included": true, "id": "org.apache.httpcomponents:httpcore:4.4.16", @@ -866,7 +866,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "3cf6cd6892e32e2b4c1c39e0f52f5248a2f5b37646fdfbb79a66b46b618414ed", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/json/json/20240303/json-20240303.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/json/json/20240303/json-20240303.jar", "selectedVersion": "20240303", "included": true, "id": "org.json:json:20240303", @@ -879,7 +879,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "8e4bde23ee28fc443975654a7b28c410a3b78d6be96b78c99ab73695ec344f7c", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter/5.10.0/junit-jupiter-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter/5.10.0/junit-jupiter-5.10.0.jar", "selectedVersion": "5.10.0", "included": true, "id": "org.junit.jupiter:junit-jupiter:5.10.0", @@ -891,7 +891,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "108088fd7ea46a8e65a0ce7f5d75ae3ff7865606770a078715f5a6e5709e17d8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", "selectedVersion": "5.10.0", "included": true, "id": "org.junit.jupiter:junit-jupiter-api:5.10.0", @@ -904,7 +904,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "selectedVersion": "1.1.2", "included": true, "id": "org.apiguardian:apiguardian-api:1.1.2", @@ -918,7 +918,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "6083db08ca11fca1e16099d0dcfede0193d80b3762b276349d80d3da536791b2", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar", "selectedVersion": "1.10.0", "included": true, "id": "org.junit.platform:junit-platform-commons:1.10.0", @@ -931,7 +931,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "selectedVersion": "1.1.2", "included": false, "id": "org.apiguardian:apiguardian-api:1.1.2", @@ -947,7 +947,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "48e2df636cab6563ced64dcdff8abb2355627cb236ef0bf37598682ddf742f1b", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", "selectedVersion": "1.3.0", "included": true, "id": "org.opentest4j:opentest4j:1.3.0", @@ -963,7 +963,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "57ea48e6f795200791065bbc86b70b84cd05367c5c9f2ac8f9268e27154c88a8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.10.0/junit-jupiter-engine-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-engine/5.10.0/junit-jupiter-engine-5.10.0.jar", "selectedVersion": "5.10.0", "included": true, "id": "org.junit.jupiter:junit-jupiter-engine:5.10.0", @@ -976,7 +976,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "selectedVersion": "1.1.2", "included": false, "id": "org.apiguardian:apiguardian-api:1.1.2", @@ -990,7 +990,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "108088fd7ea46a8e65a0ce7f5d75ae3ff7865606770a078715f5a6e5709e17d8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", "selectedVersion": "5.10.0", "included": false, "id": "org.junit.jupiter:junit-jupiter-api:5.10.0", @@ -1004,7 +1004,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "cd338efd02ee73966ea754e0c0c71e1a11f4af5db9c2003e4b6137e119155abe", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-engine/1.10.0/junit-platform-engine-1.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/platform/junit-platform-engine/1.10.0/junit-platform-engine-1.10.0.jar", "selectedVersion": "1.10.0", "included": true, "id": "org.junit.platform:junit-platform-engine:1.10.0", @@ -1017,7 +1017,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "selectedVersion": "1.1.2", "included": false, "id": "org.apiguardian:apiguardian-api:1.1.2", @@ -1031,7 +1031,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "6083db08ca11fca1e16099d0dcfede0193d80b3762b276349d80d3da536791b2", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar", "selectedVersion": "1.10.0", "included": false, "id": "org.junit.platform:junit-platform-commons:1.10.0", @@ -1045,7 +1045,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "48e2df636cab6563ced64dcdff8abb2355627cb236ef0bf37598682ddf742f1b", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar", "selectedVersion": "1.3.0", "included": false, "id": "org.opentest4j:opentest4j:1.3.0", @@ -1063,7 +1063,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f259a7322cce375430c2236a2dcb24d4a49d22045b723ad85af88e11704391c2", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-params/5.10.0/junit-jupiter-params-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-params/5.10.0/junit-jupiter-params-5.10.0.jar", "selectedVersion": "5.10.0", "included": true, "id": "org.junit.jupiter:junit-jupiter-params:5.10.0", @@ -1076,7 +1076,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar", "selectedVersion": "1.1.2", "included": false, "id": "org.apiguardian:apiguardian-api:1.1.2", @@ -1090,7 +1090,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "108088fd7ea46a8e65a0ce7f5d75ae3ff7865606770a078715f5a6e5709e17d8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", "selectedVersion": "5.10.0", "included": false, "id": "org.junit.jupiter:junit-jupiter-api:5.10.0", @@ -1108,7 +1108,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "ee52e1c299a632184fba274a9370993e09140429f5e516e6c5570fd6574b297f", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/mockito/mockito-inline/4.11.0/mockito-inline-4.11.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/mockito/mockito-inline/4.11.0/mockito-inline-4.11.0.jar", "selectedVersion": "4.11.0", "included": true, "id": "org.mockito:mockito-inline:4.11.0", @@ -1120,7 +1120,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "4b909690cab288c761eb94c0bf0e814496cf3921d8affac84cd87774530351e5", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/mockito/mockito-core/4.11.0/mockito-core-4.11.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/mockito/mockito-core/4.11.0/mockito-core-4.11.0.jar", "selectedVersion": "4.11.0", "included": true, "id": "org.mockito:mockito-core:4.11.0", @@ -1133,7 +1133,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "030704139e46f32c38d27060edee9e0676b0a0fff8a8be53461515154ba8a7be", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.12.19/byte-buddy-1.12.19.jar", + "resolved": "https://maven-proxy.dev.databricks.com/net/bytebuddy/byte-buddy/1.12.19/byte-buddy-1.12.19.jar", "selectedVersion": "1.12.19", "included": true, "id": "net.bytebuddy:byte-buddy:1.12.19", @@ -1147,7 +1147,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "3a70240de7cdcde04e7c504c2327d7035b9c25ae0206881e3bf4e6798a273ed8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.12.19/byte-buddy-agent-1.12.19.jar", + "resolved": "https://maven-proxy.dev.databricks.com/net/bytebuddy/byte-buddy-agent/1.12.19/byte-buddy-agent-1.12.19.jar", "selectedVersion": "1.12.19", "included": true, "id": "net.bytebuddy:byte-buddy-agent:1.12.19", @@ -1161,7 +1161,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "02dfd0b0439a5591e35b708ed2f5474eb0948f53abf74637e959b8e4ef69bfeb", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.3/objenesis-3.3.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/objenesis/objenesis/3.3/objenesis-3.3.jar", "selectedVersion": "3.3", "included": true, "id": "org.objenesis:objenesis:3.3", @@ -1179,7 +1179,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "f4b3694f60fccc7b520d8aea9b6c827d8e9949b652cad09fce10b546bf3ac537", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/mockito/mockito-junit-jupiter/4.11.0/mockito-junit-jupiter-4.11.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/mockito/mockito-junit-jupiter/4.11.0/mockito-junit-jupiter-4.11.0.jar", "selectedVersion": "4.11.0", "included": true, "id": "org.mockito:mockito-junit-jupiter:4.11.0", @@ -1191,7 +1191,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "108088fd7ea46a8e65a0ce7f5d75ae3ff7865606770a078715f5a6e5709e17d8", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar", "selectedVersion": "5.10.0", "included": false, "id": "org.junit.jupiter:junit-jupiter-api:5.10.0", @@ -1205,7 +1205,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "4b909690cab288c761eb94c0bf0e814496cf3921d8affac84cd87774530351e5", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/mockito/mockito-core/4.11.0/mockito-core-4.11.0.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/mockito/mockito-core/4.11.0/mockito-core-4.11.0.jar", "selectedVersion": "4.11.0", "included": false, "id": "org.mockito:mockito-core:4.11.0", @@ -1221,7 +1221,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "0818930dc8d7debb403204611691da58e49d42c50b6ffcfdce02dadb7c3c2b6c", "scope": "compile", - "resolved": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", "selectedVersion": "2.0.9", "included": true, "id": "org.slf4j:slf4j-api:2.0.9", @@ -1234,7 +1234,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "896b0639a5f0eb1fc42c453bee83ceaf8bbe6cb71b249df124c9645dfd15a0e5", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-reload4j/2.0.9/slf4j-reload4j-2.0.9.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/slf4j/slf4j-reload4j/2.0.9/slf4j-reload4j-2.0.9.jar", "selectedVersion": "2.0.9", "included": true, "id": "org.slf4j:slf4j-reload4j:2.0.9", @@ -1246,7 +1246,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "222f90d3e69541218ef6e70547749d693bd4c1846817e5bd7949b3e28950f99f", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/ch/qos/reload4j/reload4j/1.2.22/reload4j-1.2.22.jar", + "resolved": "https://maven-proxy.dev.databricks.com/ch/qos/reload4j/reload4j/1.2.22/reload4j-1.2.22.jar", "selectedVersion": "1.2.22", "included": true, "id": "ch.qos.reload4j:reload4j:1.2.22", @@ -1260,7 +1260,7 @@ "checksumAlgorithm": "SHA-256", "checksum": "0818930dc8d7debb403204611691da58e49d42c50b6ffcfdce02dadb7c3c2b6c", "scope": "test", - "resolved": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", + "resolved": "https://maven-proxy.dev.databricks.com/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", "selectedVersion": "2.0.9", "included": false, "id": "org.slf4j:slf4j-api:2.0.9", @@ -1273,9 +1273,9 @@ "mavenPlugins": [], "metaData": { "environment": { - "osName": "Linux", - "mavenVersion": "3.9.9", - "javaVersion": "11.0.30" + "osName": "Mac OS X", + "mavenVersion": "3.9.14", + "javaVersion": "25.0.2" }, "config": { "includeMavenPlugins": false, diff --git a/lockfile.json b/lockfile.json index 383d9048e..31056496f 100644 --- a/lockfile.json +++ b/lockfile.json @@ -7,9 +7,9 @@ "mavenPlugins": [], "metaData": { "environment": { - "osName": "Linux", - "mavenVersion": "3.9.9", - "javaVersion": "11.0.30" + "osName": "Mac OS X", + "mavenVersion": "3.9.14", + "javaVersion": "25.0.2" }, "config": { "includeMavenPlugins": false, From c200b120dd423f1a3c6e51c2d53a6fbf7410073d Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 1 Apr 2026 20:11:17 +0200 Subject: [PATCH 8/9] Route CI Maven resolution through Databricks proxy Maven Central is blocked on Databricks network (including GH Actions runners). Add proxy mirror config to all CI workflows so dependency resolution goes through maven-proxy.dev.databricks.com. For the release workflow, a Python script injects the mirror into the settings.xml that setup-java creates (to preserve server credentials). Co-authored-by: Isaac --- .github/inject-maven-mirror.py | 46 ++++++++++++++++++++++++++++++++++ .github/maven-settings.xml | 9 +++++++ .github/workflows/push.yml | 9 +++++++ .github/workflows/release.yml | 5 +++- 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 .github/inject-maven-mirror.py create mode 100644 .github/maven-settings.xml diff --git a/.github/inject-maven-mirror.py b/.github/inject-maven-mirror.py new file mode 100644 index 000000000..be67dedd4 --- /dev/null +++ b/.github/inject-maven-mirror.py @@ -0,0 +1,46 @@ +"""Inject Databricks Maven proxy mirror into an existing settings.xml. + +If no settings.xml exists at the given path, copies the default from +.github/maven-settings.xml instead. +""" +import sys +import xml.etree.ElementTree as ET +from pathlib import Path + +MIRROR_XML = """\ + + databricks-maven-proxy + central + https://maven-proxy.dev.databricks.com + """ + +settings_path = Path(sys.argv[1]) + +if not settings_path.exists(): + # No existing settings, just copy the default + default = Path(__file__).parent / "maven-settings.xml" + settings_path.parent.mkdir(parents=True, exist_ok=True) + settings_path.write_text(default.read_text()) + print(f"Copied default maven-settings.xml to {settings_path}") + sys.exit(0) + +# Parse existing settings and inject mirror +tree = ET.parse(settings_path) +root = tree.getroot() + +# Handle Maven namespace +ns = "" +if root.tag.startswith("{"): + ns = root.tag.split("}")[0] + "}" + +mirrors = root.find(f"{ns}mirrors") +if mirrors is None: + mirrors = ET.SubElement(root, "mirrors") + +mirror = ET.SubElement(mirrors, "mirror") +ET.SubElement(mirror, "id").text = "databricks-maven-proxy" +ET.SubElement(mirror, "mirrorOf").text = "central" +ET.SubElement(mirror, "url").text = "https://maven-proxy.dev.databricks.com" + +tree.write(settings_path, xml_declaration=True, encoding="UTF-8") +print(f"Injected Maven proxy mirror into {settings_path}") diff --git a/.github/maven-settings.xml b/.github/maven-settings.xml new file mode 100644 index 000000000..89be26c89 --- /dev/null +++ b/.github/maven-settings.xml @@ -0,0 +1,9 @@ + + + + databricks-maven-proxy + central + https://maven-proxy.dev.databricks.com + + + diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 4f5308562..3965060dd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -18,6 +18,9 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + - name: Configure Maven proxy + run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml + - name: Cache Maven packages uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -46,6 +49,9 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + - name: Configure Maven proxy + run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml + - name: Cache Maven packages uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -67,5 +73,8 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + - name: Configure Maven proxy + run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml + - name: Validate lockfile run: make check-lock diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6cad41bf7..4d7de64bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,10 @@ jobs: server-password: MAVEN_CENTRAL_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: GPG_PASSPHRASE - + + - name: Configure Maven proxy + run: python3 .github/inject-maven-mirror.py ~/.m2/settings.xml + # This step runs ONLY on branch pushes (dry-run) - name: Run Release Dry-Run (Verify) if: "!startsWith(github.ref, 'refs/tags/')" From c7a88dc104413cd6122b395fd097ce6729dbb23b Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 1 Apr 2026 20:12:48 +0200 Subject: [PATCH 9/9] Revert "Route CI Maven resolution through Databricks proxy" This reverts commit c200b120dd423f1a3c6e51c2d53a6fbf7410073d. --- .github/inject-maven-mirror.py | 46 ---------------------------------- .github/maven-settings.xml | 9 ------- .github/workflows/push.yml | 9 ------- .github/workflows/release.yml | 5 +--- 4 files changed, 1 insertion(+), 68 deletions(-) delete mode 100644 .github/inject-maven-mirror.py delete mode 100644 .github/maven-settings.xml diff --git a/.github/inject-maven-mirror.py b/.github/inject-maven-mirror.py deleted file mode 100644 index be67dedd4..000000000 --- a/.github/inject-maven-mirror.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Inject Databricks Maven proxy mirror into an existing settings.xml. - -If no settings.xml exists at the given path, copies the default from -.github/maven-settings.xml instead. -""" -import sys -import xml.etree.ElementTree as ET -from pathlib import Path - -MIRROR_XML = """\ - - databricks-maven-proxy - central - https://maven-proxy.dev.databricks.com - """ - -settings_path = Path(sys.argv[1]) - -if not settings_path.exists(): - # No existing settings, just copy the default - default = Path(__file__).parent / "maven-settings.xml" - settings_path.parent.mkdir(parents=True, exist_ok=True) - settings_path.write_text(default.read_text()) - print(f"Copied default maven-settings.xml to {settings_path}") - sys.exit(0) - -# Parse existing settings and inject mirror -tree = ET.parse(settings_path) -root = tree.getroot() - -# Handle Maven namespace -ns = "" -if root.tag.startswith("{"): - ns = root.tag.split("}")[0] + "}" - -mirrors = root.find(f"{ns}mirrors") -if mirrors is None: - mirrors = ET.SubElement(root, "mirrors") - -mirror = ET.SubElement(mirrors, "mirror") -ET.SubElement(mirror, "id").text = "databricks-maven-proxy" -ET.SubElement(mirror, "mirrorOf").text = "central" -ET.SubElement(mirror, "url").text = "https://maven-proxy.dev.databricks.com" - -tree.write(settings_path, xml_declaration=True, encoding="UTF-8") -print(f"Injected Maven proxy mirror into {settings_path}") diff --git a/.github/maven-settings.xml b/.github/maven-settings.xml deleted file mode 100644 index 89be26c89..000000000 --- a/.github/maven-settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - databricks-maven-proxy - central - https://maven-proxy.dev.databricks.com - - - diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 3965060dd..4f5308562 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -18,9 +18,6 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 - - name: Configure Maven proxy - run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml - - name: Cache Maven packages uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -49,9 +46,6 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 - - name: Configure Maven proxy - run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml - - name: Cache Maven packages uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -73,8 +67,5 @@ jobs: - name: Checkout uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 - - name: Configure Maven proxy - run: mkdir -p ~/.m2 && cp .github/maven-settings.xml ~/.m2/settings.xml - - name: Validate lockfile run: make check-lock diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d7de64bb..6cad41bf7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,10 +32,7 @@ jobs: server-password: MAVEN_CENTRAL_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: GPG_PASSPHRASE - - - name: Configure Maven proxy - run: python3 .github/inject-maven-mirror.py ~/.m2/settings.xml - + # This step runs ONLY on branch pushes (dry-run) - name: Run Release Dry-Run (Verify) if: "!startsWith(github.ref, 'refs/tags/')"