Skip to content

Commit 5b65aab

Browse files
committed
Do not lock configurations ending in DependenciesMetadata
These may not be implementing 'isCanBeResolved' correctly, so we call them out See related issues: - https://youtrack.jetbrains.com/issue/KT-34394/ - tehlers/gradle-download-dependencies-plugin#4
1 parent aa19c4b commit 5b65aab

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/main/groovy/nebula/plugin/dependencylock/tasks/GenerateLockTask.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ class GenerateLockTask extends AbstractLockTask {
106106
it.canBeResolved && !ConfigurationFilters.safelyHasAResolutionAlternative(it) &&
107107
// Always exclude compileOnly and build tools configurations to avoid issues with kotlin plugin
108108
!it.name.endsWith("CompileOnly") &&
109+
!it.name.endsWith("DependenciesMetadata") &&
109110
it.name != "compileOnly" &&
110111
it.name != "kotlinBuildToolsApiClasspath"
111112
}

src/test/groovy/nebula/plugin/dependencylock/DependencyLockLauncherSpec.groovy

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import groovy.json.JsonSlurper
1717
import nebula.plugin.BaseIntegrationTestKitSpec
1818
import nebula.plugin.dependencylock.dependencyfixture.Fixture
1919
import nebula.plugin.dependencylock.util.LockGenerator
20-
import nebula.plugin.dependencylock.utils.GradleVersionUtils
2120
import nebula.test.dependencies.DependencyGraphBuilder
2221
import nebula.test.dependencies.GradleDependencyGenerator
2322
import nebula.test.dependencies.ModuleBuilder
@@ -40,7 +39,7 @@ class DependencyLockLauncherSpec extends BaseIntegrationTestKitSpec {
4039
def setup() {
4140
definePluginOutsideOfPluginBlock = true
4241
}
43-
42+
4443
static final String SPECIFIC_BUILD_GRADLE = """\
4544
apply plugin: 'java'
4645
apply plugin: 'com.netflix.nebula.dependency-lock'
@@ -1945,6 +1944,44 @@ class DependencyLockLauncherSpec extends BaseIntegrationTestKitSpec {
19451944
result.output.contains 'test.example:foo:1.0.1 -> 1.0.0'
19461945
}
19471946

1947+
def 'does not lock DependenciesMetadata configurations'() {
1948+
buildFile << """\
1949+
buildscript {
1950+
repositories { maven { url = "https://plugins.gradle.org/m2/" } }
1951+
dependencies {
1952+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20"
1953+
}
1954+
}
1955+
plugins {
1956+
id 'com.netflix.nebula.dependency-lock'
1957+
}
1958+
apply plugin: "org.jetbrains.kotlin.jvm" // the *DependenciesMetadata configurations are resolved by the Kotlin Multiplatform plugin
1959+
repositories { mavenCentral() }
1960+
dependencies {
1961+
implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.2.0'
1962+
}
1963+
""".stripIndent()
1964+
1965+
when: "show configurations and ensure that the *DependenciesMetadata configurations exist"
1966+
def result = runTasks('dependencies')
1967+
1968+
then:
1969+
result.output.contains('apiDependenciesMetadata')
1970+
result.output.contains('compileOnlyDependenciesMetadata')
1971+
result.output.contains('implementationDependenciesMetadata')
1972+
result.output.contains('testApiDependenciesMetadata')
1973+
result.output.contains('testCompileOnlyDependenciesMetadata')
1974+
result.output.contains('testImplementationDependenciesMetadata')
1975+
1976+
when: "update locks"
1977+
runTasks('generateLock', 'saveLock')
1978+
1979+
then: "lockfile should not contain *DependenciesMetadata configurations"
1980+
def lockFile = new File(projectDir, 'dependencies.lock')
1981+
!lockFile.text.contains('implementationDependenciesMetadata')
1982+
lockFile.text.contains('org.jetbrains.kotlin:kotlin-stdlib')
1983+
}
1984+
19481985
def 'does not fail with configuration caching enabled'() {
19491986
when:
19501987
runTasks('help', '--configuration-cache')

0 commit comments

Comments
 (0)