Skip to content

Commit faceeb0

Browse files
committed
Introduce deprecation logger to bypass Gradle 8.12 upcoming deprecations
1 parent 8a98bc7 commit faceeb0

20 files changed

+240
-227
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import org.gradle.util.GradleVersion
1818
plugins {
1919
id 'com.netflix.nebula.plugin-plugin' version '21.2.1'
2020
id 'com.netflix.nebula.optional-base' version '9.0.0'
21-
id "org.jetbrains.kotlin.jvm" version "1.9.0"
21+
id "org.jetbrains.kotlin.jvm" version "2.1.0"
2222
id 'java-gradle-plugin'
2323
id "org.gradle.test-retry" version "1.5.0"
2424
}

gradle.lockfile

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,40 +14,29 @@ com.github.tomakehurst:wiremock:2.17.0=integTestCompileClasspath,integTestRuntim
1414
com.google.guava:guava:20.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
1515
com.googlecode.javaewah:JavaEWAH:1.1.12=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
1616
com.jayway.jsonpath:json-path:2.4.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
17-
com.jcraft:jsch.agentproxy.connector-factory:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
18-
com.jcraft:jsch.agentproxy.core:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
19-
com.jcraft:jsch.agentproxy.pageant:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
20-
com.jcraft:jsch.agentproxy.sshagent:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
21-
com.jcraft:jsch.agentproxy.svnkit-trilead-ssh2:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
22-
com.jcraft:jsch.agentproxy.usocket-jna:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
23-
com.jcraft:jsch.agentproxy.usocket-nc:0.0.7=integTestRuntimeClasspath,testRuntimeClasspath
2417
com.jcraft:jzlib:1.1.2=integTestRuntimeClasspath,testRuntimeClasspath
2518
com.netflix.nebula:gradle-contacts-plugin:7.0.1=integTestRuntimeClasspath,testRuntimeClasspath
26-
com.netflix.nebula:gradle-info-plugin:12.1.4=integTestRuntimeClasspath,testRuntimeClasspath
19+
com.netflix.nebula:gradle-info-plugin:13.1.0=integTestRuntimeClasspath,testRuntimeClasspath
2720
com.netflix.nebula:nebula-dependencies-comparison:0.2.1=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
28-
com.netflix.nebula:nebula-gradle-interop:2.1.1=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
29-
com.netflix.nebula:nebula-project-plugin:10.1.5=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
30-
com.netflix.nebula:nebula-publishing-plugin:20.3.0=integTestRuntimeClasspath,testRuntimeClasspath
31-
com.netflix.nebula:nebula-test:10.5.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
21+
com.netflix.nebula:nebula-gradle-interop:2.3.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
22+
com.netflix.nebula:nebula-project-plugin:11.0.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
23+
com.netflix.nebula:nebula-publishing-plugin:21.0.0=integTestRuntimeClasspath,testRuntimeClasspath
24+
com.netflix.nebula:nebula-test:10.6.2=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
3225
com.perforce:p4java:2015.2.1365273=integTestRuntimeClasspath,testRuntimeClasspath
3326
com.squareup.moshi:moshi:1.12.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
3427
com.squareup.okio:okio:2.10.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
35-
com.trilead:trilead-ssh2:1.0.0-build220=integTestRuntimeClasspath,testRuntimeClasspath
3628
commons-codec:commons-codec:1.10=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
3729
commons-logging:commons-logging:1.2=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
38-
de.regnis.q.sequence:sequence-library:1.0.3=integTestRuntimeClasspath,testRuntimeClasspath
3930
javax.servlet:javax.servlet-api:3.1.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4031
joda-time:joda-time:2.10=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
4132
junit:junit-dep:4.11=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4233
junit:junit:4.13.2=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4334
net.java.dev.jna:jna-platform:5.7.0=integTestRuntimeClasspath,testRuntimeClasspath
4435
net.java.dev.jna:jna:5.7.0=integTestRuntimeClasspath,testRuntimeClasspath
45-
net.java.dev.jna:platform:3.4.0=integTestRuntimeClasspath,testRuntimeClasspath
4636
net.minidev:accessors-smart:1.2=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4737
net.minidev:json-smart:2.3=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4838
net.sf.jopt-simple:jopt-simple:5.0.3=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4939
org.ajoberstar.grgit:grgit-core:4.1.1=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
50-
org.antlr:antlr-runtime:3.4=integTestRuntimeClasspath,testRuntimeClasspath
5140
org.antlr:antlr4-runtime:4.5.1-1=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
5241
org.apache.commons:commons-lang3:3.12.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
5342
org.apache.httpcomponents:httpclient:4.5.5=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -67,10 +56,8 @@ org.eclipse.jetty:jetty-xml:9.2.24.v20180105=integTestCompileClasspath,integTest
6756
org.eclipse.jgit:org.eclipse.jgit:5.13.0.202109080827-r=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
6857
org.hamcrest:hamcrest-core:1.3=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
6958
org.hamcrest:hamcrest:2.2=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
70-
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
71-
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
72-
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
73-
org.jetbrains.kotlin:kotlin-stdlib:1.9.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
59+
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
60+
org.jetbrains.kotlin:kotlin-stdlib:2.1.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
7461
org.jetbrains:annotations:13.0=compileClasspath,integTestCompileClasspath,integTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
7562
org.junit.platform:junit-platform-commons:1.9.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
7663
org.junit.platform:junit-platform-engine:1.9.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -81,8 +68,6 @@ org.ow2.asm:asm:5.0.4=integTestCompileClasspath,integTestRuntimeClasspath,testCo
8168
org.slf4j:slf4j-api:1.7.30=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8269
org.spockframework:spock-core:2.3-groovy-3.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8370
org.spockframework:spock-junit4:2.3-groovy-3.0=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
84-
org.tmatesoft.sqljet:sqljet:1.1.10=integTestRuntimeClasspath,testRuntimeClasspath
85-
org.tmatesoft.svnkit:svnkit:1.8.12=integTestRuntimeClasspath,testRuntimeClasspath
8671
org.xmlunit:xmlunit-core:2.5.1=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8772
org.xmlunit:xmlunit-legacy:2.5.1=integTestCompileClasspath,integTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8873
empty=annotationProcessor,integTestAnnotationProcessor,testAnnotationProcessor

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
3+
distributionUrl=https://services.gradle.org/distributions-snapshots/gradle-8.12-20241210012659+0000-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/main/groovy/nebula/plugin/dependencylock/DependencyLockTaskConfigurer.groovy

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import org.gradle.api.logging.Logger
3131
import org.gradle.api.logging.Logging
3232
import org.gradle.api.tasks.Delete
3333
import org.gradle.api.tasks.TaskProvider
34+
import org.gradle.internal.deprecation.DeprecationLogger
3435

3536
import static nebula.plugin.dependencylock.tasks.GenerateLockTask.filterNonLockableConfigurationsAndProvideWarningsForGlobalLockSubproject
3637
import static nebula.plugin.dependencylock.tasks.GenerateLockTask.lockableConfigurations
@@ -154,9 +155,12 @@ class DependencyLockTaskConfigurer {
154155

155156
saveLockTask.configure { saveTask ->
156157
saveTask.doFirst {
157-
SaveLockTask globalSave = project.rootProject.tasks.findByName(SAVE_GLOBAL_LOCK_TASK_NAME) as SaveLockTask
158-
if (globalSave?.outputLock?.exists()) {
159-
throw new GradleException('Cannot save individual locks when global lock is in place, run deleteGlobalLock task')
158+
//TODO: address Invocation of Task.project at execution time has been deprecated.
159+
DeprecationLogger.whileDisabled {
160+
SaveLockTask globalSave = project.rootProject.tasks.findByName(SAVE_GLOBAL_LOCK_TASK_NAME) as SaveLockTask
161+
if (globalSave?.outputLock?.exists()) {
162+
throw new GradleException('Cannot save individual locks when global lock is in place, run deleteGlobalLock task')
163+
}
160164
}
161165
}
162166
saveTask.conventionMapping.with {
@@ -190,10 +194,13 @@ class DependencyLockTaskConfigurer {
190194

191195
globalSaveLockTask.configure { globalSaveTask ->
192196
globalSaveTask.doFirst {
193-
project.subprojects.each { Project sub ->
194-
SaveLockTask save = sub.tasks.findByName(SAVE_LOCK_TASK_NAME) as SaveLockTask
195-
if (save && save.outputLock?.exists()) {
196-
throw new GradleException('Cannot save global lock, one or more individual locks are in place, run deleteLock task')
197+
//TODO: address Invocation of Task.project at execution time has been deprecated.
198+
DeprecationLogger.whileDisabled {
199+
project.subprojects.each { Project sub ->
200+
SaveLockTask save = sub.tasks.findByName(SAVE_LOCK_TASK_NAME) as SaveLockTask
201+
if (save && save.outputLock?.exists()) {
202+
throw new GradleException('Cannot save global lock, one or more individual locks are in place, run deleteLock task')
203+
}
197204
}
198205
}
199206
}
@@ -240,7 +247,10 @@ class DependencyLockTaskConfigurer {
240247
globalLockTask.configure { globalGenerateTask ->
241248
globalGenerateTask.notCompatibleWithConfigurationCache("Dependency locking plugin tasks require project access. Please consider using Gradle's dependency locking mechanism")
242249
globalGenerateTask.doFirst {
243-
project.subprojects.each { sub -> sub.repositories.each { repo -> project.repositories.add(repo) } }
250+
//TODO: address Invocation of Task.project at execution time has been deprecated.
251+
DeprecationLogger.whileDisabled {
252+
project.subprojects.each { sub -> sub.repositories.each { repo -> project.repositories.add(repo) } }
253+
}
244254
}
245255
globalGenerateTask.conventionMapping.with {
246256
dependenciesLock = { getBuildDirGlobalLockFile(lockFilename, extension) }

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

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.gradle.api.tasks.OutputFile
1313
import org.gradle.api.tasks.PathSensitive
1414
import org.gradle.api.tasks.PathSensitivity
1515
import org.gradle.api.tasks.TaskAction
16+
import org.gradle.internal.deprecation.DeprecationLogger
1617
import org.gradle.work.DisableCachingByDefault
1718

1819
import java.nio.charset.StandardCharsets
@@ -42,23 +43,26 @@ class DiffLockTask extends AbstractLockTask {
4243

4344
@TaskAction
4445
def diffLocks() {
45-
ConfigurationsSet existingLock = readLocks(existingLockFile)
46-
ConfigurationsSet newLock = readLocks(updatedLockFile)
47-
if (DependencyLockingFeatureFlags.isPathAwareDependencyDiffEnabled()) {
48-
Map<String, List<DependencyDiff>> diffByConfiguration = new DependenciesComparison().performDiffByConfiguration(existingLock, newLock)
49-
DiffReportGenerator generator = Class.forName("nebula.plugin.dependencylock.diff.PathAwareDiffReportGenerator").newInstance() as DiffReportGenerator
50-
def lockDiff = generator.generateDiffReport(project, diffByConfiguration)
51-
outputDir.mkdirs()
52-
diffFile.text = JsonOutput.prettyPrint(JsonOutput.toJson(lockDiff))
53-
} else {
54-
if (newLock.isEmpty()) {
46+
//TODO: address Invocation of Task.project at execution time has been deprecated.
47+
DeprecationLogger.whileDisabled {
48+
ConfigurationsSet existingLock = readLocks(existingLockFile)
49+
ConfigurationsSet newLock = readLocks(updatedLockFile)
50+
if (DependencyLockingFeatureFlags.isPathAwareDependencyDiffEnabled()) {
51+
Map<String, List<DependencyDiff>> diffByConfiguration = new DependenciesComparison().performDiffByConfiguration(existingLock, newLock)
52+
DiffReportGenerator generator = Class.forName("nebula.plugin.dependencylock.diff.PathAwareDiffReportGenerator").newInstance() as DiffReportGenerator
53+
def lockDiff = generator.generateDiffReport(project, diffByConfiguration)
5554
outputDir.mkdirs()
56-
diffFile.withPrintWriter(StandardCharsets.UTF_8.displayName()) { writer ->
57-
writer.println('--no updated locks to diff--')
58-
}
55+
diffFile.text = JsonOutput.prettyPrint(JsonOutput.toJson(lockDiff))
5956
} else {
60-
List<DependencyDiff> diff = new DependenciesComparison().performDiff(existingLock, newLock)
61-
writeDiff(diff)
57+
if (newLock.isEmpty()) {
58+
outputDir.mkdirs()
59+
diffFile.withPrintWriter(StandardCharsets.UTF_8.displayName()) { writer ->
60+
writer.println('--no updated locks to diff--')
61+
}
62+
} else {
63+
List<DependencyDiff> diff = new DependenciesComparison().performDiff(existingLock, newLock)
64+
writeDiff(diff)
65+
}
6266
}
6367
}
6468
}

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

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,11 @@ import org.gradle.api.tasks.Input
3333
import org.gradle.api.tasks.Internal
3434
import org.gradle.api.tasks.Optional
3535
import org.gradle.api.tasks.TaskAction
36+
import org.gradle.internal.deprecation.DeprecationLogger
3637
import org.gradle.work.DisableCachingByDefault
3738

3839
@DisableCachingByDefault
3940
class GenerateLockTask extends AbstractLockTask {
40-
private String WRITE_CORE_LOCK_TASK_TO_RUN = "`./gradlew dependencies --write-locks`"
41-
private String MIGRATE_TO_CORE_LOCK_TASK_NAME = "migrateToCoreLocks"
4241
private static final Logger LOGGER = Logging.getLogger(GenerateLockTask)
4342

4443
@Internal
@@ -72,25 +71,31 @@ class GenerateLockTask extends AbstractLockTask {
7271

7372
@TaskAction
7473
void lock() {
75-
if (DependencyLockingFeatureFlags.isCoreLockingEnabled()) {
76-
def dependencyLockExtension = project.extensions.findByType(DependencyLockExtension)
77-
def globalLockFile = new File(project.projectDir, dependencyLockExtension.globalLockFile)
78-
if (globalLockFile.exists()) {
79-
throw new BuildCancelledException("Legacy global locks are not supported with core locking.\n" +
80-
"Please remove global locks.\n" +
81-
" - Global locks: ${globalLockFile.absolutePath}")
82-
}
74+
//TODO: address Invocation of Task.project at execution time has been deprecated.
75+
DeprecationLogger.whileDisabled {
76+
final String WRITE_CORE_LOCK_TASK_TO_RUN = "`./gradlew dependencies --write-locks`"
77+
final String MIGRATE_TO_CORE_LOCK_TASK_NAME = "migrateToCoreLocks"
78+
if (DependencyLockingFeatureFlags.isCoreLockingEnabled()) {
79+
def dependencyLockExtension = project.extensions.findByType(DependencyLockExtension)
80+
def globalLockFile = new File(project.projectDir, dependencyLockExtension.globalLockFile)
81+
if (globalLockFile.exists()) {
82+
throw new BuildCancelledException("Legacy global locks are not supported with core locking.\n" +
83+
"Please remove global locks.\n" +
84+
" - Global locks: ${globalLockFile.absolutePath}")
85+
}
8386

84-
throw new BuildCancelledException("generateLock is not supported with core locking.\n" +
85-
"Please use $WRITE_CORE_LOCK_TASK_TO_RUN\n" +
86-
"or do a one-time migration with `./gradlew $MIGRATE_TO_CORE_LOCK_TASK_NAME` to preserve the current lock state")
87-
}
88-
if (DependencyLockTaskConfigurer.shouldIgnoreDependencyLock(project)) {
89-
throw new DependencyLockException("Dependency locks cannot be generated. The plugin is disabled for this project (dependencyLock.ignore is set to true)")
87+
throw new BuildCancelledException("generateLock is not supported with core locking.\n" +
88+
"Please use $WRITE_CORE_LOCK_TASK_TO_RUN\n" +
89+
"or do a one-time migration with `./gradlew $MIGRATE_TO_CORE_LOCK_TASK_NAME` to preserve the current lock state")
90+
}
91+
if (DependencyLockTaskConfigurer.shouldIgnoreDependencyLock(project)) {
92+
throw new DependencyLockException("Dependency locks cannot be generated. The plugin is disabled for this project (dependencyLock.ignore is set to true)")
93+
}
94+
Collection<Configuration> confs = getConfigurations() ?: lockableConfigurations(project, project, getConfigurationNames(), getSkippedConfigurationNames())
95+
Map dependencyMap = new GenerateLockFromConfigurations().lock(confs)
96+
new DependencyLockWriter(getDependenciesLock(), getSkippedDependencies()).writeLock(dependencyMap)
9097
}
91-
Collection<Configuration> confs = getConfigurations() ?: lockableConfigurations(project, project, getConfigurationNames(), getSkippedConfigurationNames())
92-
Map dependencyMap = new GenerateLockFromConfigurations().lock(confs)
93-
new DependencyLockWriter(getDependenciesLock(), getSkippedDependencies()).writeLock(dependencyMap)
98+
9499
}
95100

96101
static Collection<Configuration> lockableConfigurations(Project taskProject, Project project, Set<String> configurationNames, Set<String> skippedConfigurationNamesPrefixes = []) {

0 commit comments

Comments
 (0)