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 = {