diff --git a/lib/modules/manager/gradle/artifacts.spec.ts b/lib/modules/manager/gradle/artifacts.spec.ts
index 9bf95bc6928f9f41e1643839024887eb2a1d7194..f2856dc899b50aedc2bca56556bb4074e7278fd7 100644
--- a/lib/modules/manager/gradle/artifacts.spec.ts
+++ b/lib/modules/manager/gradle/artifacts.spec.ts
@@ -209,6 +209,21 @@ describe('modules/manager/gradle/artifacts', () => {
     ]);
   });
 
+  it('aborts lock file maintenance if packageFileName is not build.gradle(.kts) in root project', async () => {
+    expect(
+      await updateArtifacts({
+        packageFileName: 'somedir/settings.gradle',
+        updatedDeps: [],
+        newPackageFileContent: '',
+        config: { isLockFileMaintenance: true },
+      })
+    ).toBeNull();
+
+    expect(logger.logger.trace).toHaveBeenCalledWith(
+      'No build.gradle(.kts) file or not in root project - skipping lock file maintenance'
+    );
+  });
+
   it('performs lock file maintenance', async () => {
     const execSnapshots = mockExecAll();
 
diff --git a/lib/modules/manager/gradle/artifacts.ts b/lib/modules/manager/gradle/artifacts.ts
index f1bc77b70a991aa9daa85264a6fc1aedeac3074a..532025c0715da4ac1957ab7ece10eb75592fa339 100644
--- a/lib/modules/manager/gradle/artifacts.ts
+++ b/lib/modules/manager/gradle/artifacts.ts
@@ -18,8 +18,10 @@ import {
   extractGradleVersion,
   getJavaConstraint,
   gradleWrapperFileName,
+  prepareGradleCommand,
 } from '../gradle-wrapper/utils';
 import type { UpdateArtifact, UpdateArtifactsResult } from '../types';
+import { isGradleBuildFile } from './utils';
 
 async function getUpdatedLockfiles(
   oldLockFileContentMap: Record<string, string | null>
@@ -102,12 +104,25 @@ export async function updateArtifacts({
     );
     return null;
   }
+
+  if (
+    config.isLockFileMaintenance &&
+    (!isGradleBuildFile(packageFileName) ||
+      dirname(packageFileName) !== dirname(gradlewFile))
+  ) {
+    logger.trace(
+      'No build.gradle(.kts) file or not in root project - skipping lock file maintenance'
+    );
+    return null;
+  }
+
   logger.debug('Updating found Gradle dependency lockfiles');
 
   try {
     const oldLockFileContentMap = await getFileContentMap(lockFiles);
 
     await writeLocalFile(packageFileName, newPackageFileContent);
+    await prepareGradleCommand(gradlewFile);
 
     let cmd = `${gradlewName} --console=plain -q`;
     const execOptions: ExecOptions = {