diff --git a/build.gradle b/build.gradle index 56a10e8e145..73f03d97d28 100644 --- a/build.gradle +++ b/build.gradle @@ -13,6 +13,8 @@ buildscript { } plugins { + id "datadog.dependency-locking" + id "com.diffplug.spotless" version "6.13.0" id 'com.github.spotbugs' version '5.0.14' id "de.thetaphi.forbiddenapis" version "3.5.1" @@ -192,32 +194,6 @@ def testAggregate(String baseTaskName, includePrefixes, excludePrefixes, boolean createRootTask "${baseTaskName}Check", 'check' } -// To lock dependency versions, run `./gradlew resolveAndLockAll --write-locks` -tasks.register('resolveAndLockAll') { - notCompatibleWithConfigurationCache("Filters configurations at execution time") - doFirst { - assert gradle.startParameter.writeDependencyLocks - } - doLast { - allprojects { project -> - project.configurations.findAll { - it.canBeResolved && !it.name.startsWith('incrementalScalaAnalysis') - }.each { it.resolve() } - } - } -} - -allprojects { project -> - project.dependencyLocking { - lockAllConfigurations() - //lockmode set to LENIENT because there are resolution - //errors in the build with an apiguardian dependency. - //See: https://docs.gradle.org/current/userguide/dependency_locking.html for more info - lockMode = LockMode.LENIENT - - } -} - testAggregate("smoke", [":dd-smoke-tests"], []) testAggregate("instrumentation", [":dd-java-agent:instrumentation"], []) testAggregate("profiling", [":dd-java-agent:agent-profiling"], []) diff --git a/buildSrc/src/main/kotlin/datadog.dependency-locking.gradle.kts b/buildSrc/src/main/kotlin/datadog.dependency-locking.gradle.kts new file mode 100644 index 00000000000..8dba39a4897 --- /dev/null +++ b/buildSrc/src/main/kotlin/datadog.dependency-locking.gradle.kts @@ -0,0 +1,32 @@ +/* + * This plugin enables dependency locking. + * + * The goal is to be able to later rebuild any version, by pinning floating versions. + * It will also help IDEs not having to re-index any latest library release. + * Pinned versions will be updated by the CI on a weekly basis. + * + * Pinned version can be updated using: ./gradlew resolveAndLockAll --write-locks + * + * See https://docs.gradle.org/current/userguide/dependency_locking.html + */ + +project.dependencyLocking { + lockAllConfigurations() + //lockmode set to LENIENT because there are resolution + //errors in the build with an apiguardian dependency. + //See: https://docs.gradle.org/current/userguide/dependency_locking.html for more info + lockMode = LockMode.LENIENT +} + +tasks.register("resolveAndLockAll") { + notCompatibleWithConfigurationCache("Filters configurations at execution time") + doFirst { + require(gradle.startParameter.isWriteDependencyLocks) + } + doLast { + configurations.filter { + // Add any custom filtering on the configurations to be resolved + it.isCanBeResolved + }.forEach { it.resolve() } + } +} diff --git a/gradle/java.gradle b/gradle/java.gradle index 11bea1a8031..ff93b9dcf4a 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -1,2 +1,4 @@ +apply plugin: 'datadog.dependency-locking' + apply from: "$rootDir/gradle/java_deps.gradle" apply from: "$rootDir/gradle/java_no_deps.gradle"