Add Gradle Lock Plugin
This commit is contained in:
parent
e16f15cce3
commit
a401392bac
@ -11,6 +11,7 @@ buildscript {
|
||||
}
|
||||
|
||||
apply plugin: 'io.spring.nohttp'
|
||||
apply plugin: 'locks'
|
||||
apply plugin: 'io.spring.convention.root'
|
||||
|
||||
group = 'org.springframework.security.experimental'
|
||||
|
14
buildSrc/build.gradle
Normal file
14
buildSrc/build.gradle
Normal file
@ -0,0 +1,14 @@
|
||||
apply plugin: "java-gradle-plugin"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
locks {
|
||||
id = "locks"
|
||||
implementationClass = "lock.GlobalLockPlugin"
|
||||
}
|
||||
}
|
||||
}
|
16
buildSrc/src/main/java/lock/GlobalLockPlugin.java
Normal file
16
buildSrc/src/main/java/lock/GlobalLockPlugin.java
Normal file
@ -0,0 +1,16 @@
|
||||
package lock;
|
||||
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
|
||||
/**
|
||||
* @author Rob Winch
|
||||
*/
|
||||
public class GlobalLockPlugin implements Plugin<Project> {
|
||||
@Override
|
||||
public void apply(Project project) {
|
||||
project.getTasks().register("writeLocks", GlobalLockTask.class, writeAll -> {
|
||||
writeAll.setDescription("Writes the locks for all projects");
|
||||
});
|
||||
}
|
||||
}
|
40
buildSrc/src/main/java/lock/GlobalLockTask.java
Normal file
40
buildSrc/src/main/java/lock/GlobalLockTask.java
Normal file
@ -0,0 +1,40 @@
|
||||
package lock;
|
||||
|
||||
import org.gradle.api.Action;
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.tasks.TaskAction;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* @author Rob Winch
|
||||
*/
|
||||
public class GlobalLockTask extends DefaultTask {
|
||||
@TaskAction
|
||||
public void lock() {
|
||||
Project taskProject = getProject();
|
||||
if (!taskProject.getGradle().getStartParameter().isWriteDependencyLocks()) {
|
||||
throw new IllegalStateException("You just specify --write-locks argument");
|
||||
}
|
||||
writeLocksFor(taskProject);
|
||||
taskProject.getSubprojects().forEach(new Consumer<Project>() {
|
||||
@Override
|
||||
public void accept(Project subproject) {
|
||||
writeLocksFor(subproject);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void writeLocksFor(Project project) {
|
||||
project.getConfigurations().configureEach(new Action<Configuration>() {
|
||||
@Override
|
||||
public void execute(Configuration configuration) {
|
||||
if (configuration.isCanBeResolved()) {
|
||||
configuration.resolve();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -10,6 +10,12 @@ if (!project.hasProperty("reactorVersion")) {
|
||||
ext.reactorVersion = "Dysprosium-SR+"
|
||||
}
|
||||
|
||||
if (!project.hasProperty("locksDisabled")) {
|
||||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom "org.springframework:spring-framework-bom:$springVersion"
|
||||
|
Loading…
Reference in New Issue
Block a user