Browse Source

Add Gradle Lock Plugin

Issue gh-7788
pull/7785/head
Rob Winch 6 years ago
parent
commit
1bb1e74a9d
  1. 1
      build.gradle
  2. 4
      buildSrc/build.gradle
  3. 16
      buildSrc/src/main/java/lock/GlobalLockPlugin.java
  4. 40
      buildSrc/src/main/java/lock/GlobalLockTask.java
  5. 4
      gradle/dependency-management.gradle

1
build.gradle

@ -11,6 +11,7 @@ buildscript { @@ -11,6 +11,7 @@ buildscript {
}
}
apply plugin: 'io.spring.nohttp'
apply plugin: 'locks'
apply plugin: 'io.spring.convention.root'
group = 'org.springframework.security'

4
buildSrc/build.gradle

@ -10,6 +10,10 @@ gradlePlugin { @@ -10,6 +10,10 @@ gradlePlugin {
id = "trang"
implementationClass = "trang.TrangPlugin"
}
locks {
id = "locks"
implementationClass = "lock.GlobalLockPlugin"
}
}
}

16
buildSrc/src/main/java/lock/GlobalLockPlugin.java

@ -0,0 +1,16 @@ @@ -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

@ -0,0 +1,40 @@ @@ -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();
}
}
});
}
}

4
gradle/dependency-management.gradle

@ -117,3 +117,7 @@ dependencies { @@ -117,3 +117,7 @@ dependencies {
management "org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE"
}
}
dependencyLocking {
lockAllConfigurations()
}

Loading…
Cancel
Save